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!!!
Ajax + JSP + Mysql
12 Respostas
No meu blog tem um, bem modesto, mas talvez ajude…
http://jairelton.com em tutoriais
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
Tenho uma idéia melhor: você faz e se der algum erro você posta aqui… o que você acha?
:idea:
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);
%>
O metodo é getParameter()
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?
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"%>
JairElton, nao funcionou ainda nao…posso te mandar os meus arquivos por e-mail? pra vc ver o q deve ta acontecendo?
Manda aí que eu tento rodar aqui!
Prontinho…ja enviei…Abraços!!!
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
Esse problema foi resolvido? Estou com um problema bem parecido, achei melhor postar nesse tópico a abrir outro.
Obrigado,
Abraços…