Ajax + JSP + Mysql

12 respostas
L

Alguem tem um exemplo de ajax com jsp e mysql?
tipo, algo como seleciona o estado e carrega as cidades em um combobox logo abaixo? se alguem tiver, posta o codigo ai…Obrigada!!!

12 Respostas

J

No meu blog tem um, bem modesto, mas talvez ajude…

http://jairelton.com em tutoriais

L

Eu peguei esse codigo no site do imasters…so q ta em php…ai eu queria passar ele para jsp…alguem consegue?


http://www.imasters.com.br/artigo/3918/javascript/ajax_e_php_-_carregando_dados_sem_refresh

M

Tenho uma idéia melhor: você faz e se der algum erro você posta aqui… o que você acha?

:idea:

L

Olhem o codigo que eu tentei implementar, mas nao deu certo…ta dando esse erro
nesse javascript tem uma parte que é var params = “estado=”+valor;
ai eu fiz um metodo consultaCidadeDAO(int estado) n se se deve ser isso mesmo…que pega qual o estado que passou por parametro…acho q deve ser nisso q estou errando…

An error occurred at line: 16 in the jsp file: /cidades.jsp
Generated servlet error:
The method getParamater(String) is undefined for the type HttpServletRequest

Meus codigos

javascript dentro do index.jsp

...
function Dados(valor) {
      //verifica se o browser tem suporte a ajax
	  try {
         ajax = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e) {
         try {
            ajax = new ActiveXObject("Msxml2.XMLHTTP");
         }
	     catch(ex) {
            try {
               ajax = new XMLHttpRequest();
            }
	        catch(exc) {
               alert("Esse browser não tem recursos para uso do Ajax");
               ajax = null;
            }
         }
      }
	  //se tiver suporte ajax
	  if(ajax) {
	     //deixa apenas o elemento 1 no option, os outros são excluídos
		 document.forms[0].listCidades.options.length = 1;

		 idOpcao  = document.getElementById("opcoes");

	     ajax.open("POST", "cidades.jsp", true);
		 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

		 ajax.onreadystatechange = function() {
            //enquanto estiver processando...emite a msg de carregando
			if(ajax.readyState == 1) {
			   idOpcao.innerHTML = "Carregando cidades...!";
	        }
			//após ser processado - chama função processXML que vai varrer os dados
            if(ajax.readyState == 4 ) {
			   if(ajax.responseXML) {
			      processXML(ajax.responseXML);
			   }
			   else {
			       //caso não seja um arquivo XML emite a mensagem abaixo
				   idOpcao.innerHTML = "--Selecione o estado--";
			   }
            }
         }
		 //passa o código do estado escolhido
	     var params = "estado="+valor;
         ajax.send(params);
      }
   }

   function processXML(obj){
      //pega a tag cidade
      var dataArray   = obj.getElementsByTagName("cidade");

	  //total de elementos contidos na tag cidade
	  if(dataArray.length > 0) {
	     //percorre o arquivo XML paara extrair os dados
         for(var i = 0 ; i < dataArray.length ; i++) {
            var item = dataArray[i];
			//contéudo dos campos no arquivo XML
			var codigo    =  item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
			var descricao =  item.getElementsByTagName("descricao")[0].firstChild.nodeValue;

	        idOpcao.innerHTML = "--Selecione a cidade--";

			//cria um novo option dinamicamente
			var novo = document.createElement("option");
			    //atribui um ID a esse elemento
			    novo.setAttribute("id", "opcoes");
				//atribui um valor
			    novo.value = codigo;
				//atribui um texto
			    novo.text  = descricao;
				//finalmente adiciona o novo elemento
				document.forms[0].listCidades.options.add(novo);
		 }
	  }
	  else {
	    //caso o XML volte vazio, printa a mensagem abaixo
		idOpcao.innerHTML = "--Selecione o estado--";
	  }
   }

// dentro do meu form eu tenho

select name=listEstados onChange=Dados(this.value); class=FormEscolheEstado
		    <%
ArrayList array = (ArrayList) consultarEstado();
 Iterator it = array.iterator();
 while ( it.hasNext() ) {
  EstadoVO vo = (EstadoVO) it.next();
%>
option value="<%=vo.getCod()%>"
<%=vo.getNome()%>
fechaoption
<% } %>

// select da cidade
select name=listCidades onChange=alert(this.value); class=FormEscolheCidade
            option id=opcoes value=0  --Selecione o estado--   //fechaoption
//fechaselect

index.jsp

<%@ page import="com.teste.EstadoDAO" %>
<%@ page import="com.teste.EstadoVO" %>
<%@ page import="java.util.Collection" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Iterator" %>
<%!
 public Collection consultarEstado() {
   EstadoDAO est = new EstadoDAO();
   Collection estados = est.consultarEstado();
   return estados;
 } 
%>

...javascripts

cidades.jsp

<%@ page import="com.teste.CidadeDAO" %>
<%@ page import="com.teste.CidadeVO" %>
<%@ page import="java.util.Collection" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Iterator" %>
<%!
 public Collection consultarCidade(int estado) {
   CidadeDAO cid = new CidadeDAO();
   Collection cidades = cid.consultarCidade(estado);
   return cidades;
 } 

%>
<%
  String xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
  xml = xml + "<cidades>\n";
  int estado = request.getParamater("estado");
ArrayList array2 = (ArrayList) consultarCidade(estado);
 Iterator it2 = array2.iterator();
 while ( it2.hasNext() ) {
  CidadeVO vo = (CidadeVO) it2.next();
  
xml = xml + "<cidade>\n";
xml = xml + "<codigo>" + estado + "</codigo>\n";
xml = xml + "<descricao>" + vo.getNome() + "</descricao>\n";
xml = xml + "</cidade>\n";
%>
<% } 
xml = xml + "</cidades>\n";

out.print(xml);
%>
J

O metodo é getParameter()

L

Corrigi, e agora n ta dando mais o erro, mas tbem ele nao esta carregando as cidades no combobox das cidades…eu seleciono o estado, ai aparece no combo das cidades, carregando…ai manda selecionar, mas esta em branco…o q pode ser?

J

Tente colocar o codigo abaixo na primeira linha do cidades.jsp, se não der, tenta ver onde ele para no codigo Javascript, você pode usar alert() pra ver ou um debugger de Javascript…

<%@ page contentType="text/xml"%>
L

JairElton, nao funcionou ainda nao…posso te mandar os meus arquivos por e-mail? pra vc ver o q deve ta acontecendo?

J

Manda aí que eu tento rodar aqui!

L

Prontinho…ja enviei…Abraços!!!

P

cara se eu puder ajudar dou uma olhada no codigo pra vc [email removido]

1º tenta ver se o erro eh esse…

em vez de usar int xyz=request.getParameter() use
String nome=request.getParameter(“nome”) ou entao converta o valor antes de jogar na variavel
int xyz=integer.parseInt(request.getParameter(“campoInteiro”));

t++++++++++ e boa sorte

J

Esse problema foi resolvido? Estou com um problema bem parecido, achei melhor postar nesse tópico a abrir outro.

Obrigado,

Abraços…

Criado 8 de junho de 2006
Ultima resposta 23 de jul. de 2006
Respostas 12
Participantes 5