Ovelho problema com Firefox...
fala galera, bam d mais?
Acredito q alguns já devem estar cheios dessa dúvida, mas ainda não consegui respostas para tal. Estou fazendo um site em que tem um formulário com aquela "jogadinha" de estado - cidade. O usuiário seleciona o estado, e então as cidades são puxadas dinâmicamente, via Javascript(AJAX).
O que acontece é que essa função só funciona no Explorer, mas não no Firefox. Abaixo a relação de cada parte do código:
Parte do fomulário onde a função é chamada:
<select name="listEstados" id= "listEstados" class="campos2" onchange="Dados(this.value);"> <option selected="selected" value="">Escolha:</option> <% WHILE NOT rs_uf.EOF %> <option value="<%=rs_uf("ID_ESTADO")%>"><%=rs_uf("DSC_ESTADO")%></option> <% rs_uf.MOVENEXT WEND rs_uf.CLOSE SET rs_uf = NOTHING %> </select>
A função DADOS:
//Combo dinâmico para estado/cidadefunction 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("GET", "../config/cidade.asp", 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..."; } //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 = "--"; } } } //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 = "--"; //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 = "--"; } }
Página cidade(chamada na função DADOS):
<!-- #include virtual="./config/conexao.asp" --><%DIM estado, Criaestado = REQUEST("estado")DIM SQL_, RS_SQL_ = "SELECT ID_CIDADE, DSC_CIDADE FROM TB_CIDADES WHERE COD_ESTADO = "&estado&" ORDER BY DSC_CIDADE ASC"SET RS_ = conexao.execute(SQL_)DIM XMLResponse.ContentType="text/xml"Cria = "<?xml version='1.0' encoding='ISO-8859-1'?>"Cria = Cria& "<cidades>"WHILE NOT RS_.EOFCria = Cria& "<cidade>"Cria = Cria& " <codigo>"&RS_("DSC_CIDADE")&"</codigo>"Cria = Cria& " <descricao>"&RS_("DSC_CIDADE")&"</descricao>"Cria = Cria& "</cidade>"RS_.MOVENEXTWENDCria = Cria& "</cidades>"response.write Cria%>
e finalmente a parte do formulário onde as cidades são exibidas no combo:
<select name="listCidades" id="listCidades" class="campos2"> <option id="opcoes" name="opcoes" selected="selected" value="">Escolha:</option> </select>
É isso! Se alguém puder me ajudar e resolver esse problema...
Abraços a todos!!
Discussão (3)
Carregando comentários...