Estou fazendo um site usando Servlets JSP e JQuery
O que estou tentando fazer é chamar um servlet para popular dois combos, um de Estado e um de Cidade.
Uma pagina chama o Servlet que faz uma busca no banco. que traz todos os estados. vejo quem é o primeiro da lista, e faço um select no banco para puxar as cidades do primeiro estado e populo os de estado e cidade.
A duvida é que eu queria que quando eu escolhesse outro estado. chamasse o Servlet, para eu poder popular as cidades daquele estado na
Alguém sabe como eu faço pra chamar o servlet através de uma escolha do “DropBox”?
$(document).ready($(function(){
//Aqui eu recebo a mudanca de estado do select do estado e chamo a funcao que entrara em contato com o servlet
// e recebera as cidade populando o select da cidade
$("#uf").bind("change", listarCidadesPorUF);
}));
[code]
function listarCidadesPorUF(){
var ts = $.ajax({
type: "post",
url: "Controller?cmd=GetCidadePorEstado&uf="+$(this).val(), //Aqui eu chamei o servlet
success: function(result){
//Conforme o resultado adquirido eu populo o obj
$("#cidade option").remove();
$("#cidade").append(
"<option value=\"---\">- - - - - - - - - - - - - - - - - - - -</option>");
if(result.length == '2'){
$("#cidade").append(
"<option id=\"cadNovaCidade\" class=\"optionCadCidade\" value=\"newCity\">*** Cadastrar Nova Cidade ***</option>");
} else {
var obj = jQuery.parseJSON(result);
var i;
for(i = 0; i < obj.length; i++){
$("#cidade").append("<option value=\""+obj[i].idCidade+"\">"+obj[i].nomeCidade+"</option>");
}
$("#cidade").append("<option id=\"cadNovaCidade\" class=\"optionCadCidade\" value=\"newCity\">*** Cadastrar Nova Cidade ***</option>");
}
}
});
<jsp:useBean class="br.com.seupacote.suaClasseDAO" id="dao"/> //estanciei a sua classe dao
<select name="selecao">
<c:forEach var="opcoes" items="${dao.opcoes}" >
// forEach que vai exibir todos os items do banco , a var vai ser tipo uma variavel que vai representar o for o items eu uso a estancia do dao e executo um metodo nele que no caso é o //getOpcoes , porem a EL da jstl lê todos os metodos SEM O get,porem o metodo tem que estar nomeado com o get
<option> ${opcoes.opcao} </option> //aqui vai popular as opcoes do select com o for,sendo que opcao no caso é o atributo da classe que vai pegar o valor da opção
</c:forEach>
</select>
e detalhe,você pode fazer a mesma coisa se você primeiro requisitar um servlet,buscar a lista nele,salvar essa lista no request ,dar um foward para a jsp
e na jsp fazer o foreach com jstl,como mostrei acima,a unica diferença é que você vai pegar com requestScope.tipo
show de bola Charles, mas não sei porque. nada que é script está funcionando na minha pagina.
só funcionam se eu dou um F5 na tela. ai tudo funciona. se não a tela fica um HTML normal. você sabe o que pode ser?
[quote=charles.eduardo]
$(document).ready($(function(){
//Aqui eu recebo a mudanca de estado do select do estado e chamo a funcao que entrara em contato com o servlet
// e recebera as cidade populando o select da cidade
$("#uf").bind("change", listarCidadesPorUF);
}));
[code]
function listarCidadesPorUF(){
var ts = $.ajax({
type: "post",
url: "Controller?cmd=GetCidadePorEstado&uf="+$(this).val(), //Aqui eu chamei o servlet
success: function(result){
//Conforme o resultado adquirido eu populo o obj
$("#cidade option").remove();
$("#cidade").append(
"<option value=\"---\">- - - - - - - - - - - - - - - - - - - -</option>");
if(result.length == '2'){
$("#cidade").append(
"<option id=\"cadNovaCidade\" class=\"optionCadCidade\" value=\"newCity\">*** Cadastrar Nova Cidade ***</option>");
} else {
var obj = jQuery.parseJSON(result);
var i;
for(i = 0; i < obj.length; i++){
$("#cidade").append("<option value=\""+obj[i].idCidade+"\">"+obj[i].nomeCidade+"</option>");
}
$("#cidade").append("<option id=\"cadNovaCidade\" class=\"optionCadCidade\" value=\"newCity\">*** Cadastrar Nova Cidade ***</option>");
}
}
});
Resolvido. eu não sei porque mas a tela começou a funcionar quando eu coloquei o atributo “target=’_parent’” no link para a pagina, e tudo funcionou. valeu!!
Coldn esqueci de informar que o script que está sendo utilizando depende do framework Jquery ( http://jquery.com/download/ ). Desculpe-me a demora na pergunta.