Ir para conteúdo
Fórum Script Brasil
  • 0

Problema Com Ajax (cidade/estado)


frnd

Pergunta

A pagina abaixo não consegue buscar as cidades do estado respectivo... fazendo com que as cidades não vem.. será que deve ser erro do JavaScript? posição do JavaScript?

[]s

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns=http://www.w3.org/1999/xhtml">

<head>

<link rel="stylesheet" href="../biblioteca/estilo/estilo.css" type="text/css" />

</head>

<head>

<title>Egressos</title>

<script language="javascript" src="../biblioteca/javascript/JS.js">

</script>

<script language="JavaScript">

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.php", 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 = "--Primeiro 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;

//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 uma das opções abaixo--";

//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 = "--Primeiro selecione o estado--";

}

}

</script>

<body>

<div id="site">

<?php include_once("../biblioteca/egresso/topo.php"); ?>

<div class="conteudo2">

<?php include_once("../biblioteca/esquerdo.php"); ?>

<?php include_once ("../biblioteca/direito.php"); ?>

<div class="ConteudoMeio">

<!--div class="CaixaLocalizacao">

<div class="Localizacao">

<a href="/./egressos_sist/index.php">Home</a> >> <b>Cadastro Egresso</b>

</div>

</div-->

<div class="CaixaMeio">

<div class="ContedoCxMeio2">

<form name="form" action="CadEgresso_exe.php" method="post" class="formCad2" id="formCad2" onSubmit="checa(this)">

<table class="TabelaDadosCad">

<tr>

<td class="label">ID Antigo:</td>

<td> <input type="text" class="campoid" name="id"></td>

</tr>

<tr>

<td class="label">Nome:</td>

<td> <input type="text" class="camponome" name="nome"></td>

</tr>

<tr>

<td class="label">Dt. Nasc.:</td>

<td><input type="text" class="campodata" name="dtnasc"></td>

</tr>

<tr>

<td class="label">Sexo:</td>

<td><select option="sexo" class="camposexo">

<option value="0">Selecione Abaixo:</option>

<option value="Masculino">Masculino</option>

<option value="Feminino">Feminino</option>

</select>

</td>

</tr>

<tr>

<td class="label">RG:</td>

<td><input type="text" maxlength="12" class="camporg" name="rg"></td>

</tr>

<tr>

<td class="label">Órgão Ex.:</td>

<td><input type="text" class="campoorgaoexpeditor" name="orgaoexpeditor"></td>

</tr>

<tr>

<td class="label">Estado:</td>

<?php require_once("../biblioteca/connectmysql.php"); ?>

<? //PEGA OS ESTADOS

$sql = " SELECT a.idestado, a.nome, a.uf

FROM estado a

ORDER BY a.nome";

//EXECUTA A QUERY

$sql = mysql_query($sql);

$row = mysql_num_rows($sql);

?>

<td> <select name="listEstados" class="camposelectEstado" onChange="Dados(this.value);">

<option value="0">--Selecione o estado >></option>

<? for($i=0; $i<$row; $i++) { ?>

<option value="<? echo mysql_result($sql, $i, "idestado"); ?>">

<? echo mysql_result($sql, $i, "nome"); ?></option>

<? } ?>

</select>

</td>

</tr>

<tr>

<td class="label">Cidade:</td>

<td><select name="listCidades" class="camposelectCidade">

<option id="opcoes" value="0">--Primeiro selecione o estado--</option>

</select></td>

<?php require_once("../biblioteca/closemysql.php"); ?>

</tr>

<tr>

<td class="label">CPF:</td>

<td><input type="text" maxlength="14" class="campocpf" name="cpf" onkeypress="return txtBoxFormat(document.cadastrar_cliente_fisico, 'cpf', '999.999.999-99', event);" onchange="return valida_form(document.cadastrar_cliente_fisico)" ></td>

</tr>

<tr>

<td class="label">Email:</td>

<td><input type="text" class="campoemail" name="email"></td>

</tr>

<tr>

<td class="label">Est. Civil:</td>

<td><select name="ec" class="camposelectEC">

<option value="">Escolha Abaixo</option>

<option value="Casado">Casado

<option value="Solteiro">Solteiro

<option value="Divorciado">Divorciado

<option value="Amasiado">Amasiado

<option value="Uniao Estavel">União Estável</option>

</select> </td>

</tr>

<tr>

<td class="label">Username:</td>

<td><input type="text" class="campousername" name="usuario"> </td>

</tr>

<tr>

<td class="label">Senha:</td>

<td><input type="password" class="camposenha" name="senha"></td>

</tr>

<tr>

<td colspan="2"><br>

<input type="submit" name="cadastrar" value="" class="btnCad">

<input type="submit" name="alterar" value="" class="btnAlterar">

<input type="reset" name="limpar" value="" class="btnLimpar"> </td>

</tr>

</table>

</form>

</div>

</div>

</div>

</div>

<?php include_once ("../biblioteca/base.php"); ?>

</div>

</body>

</html>

---------------------------------------------------------------------------------------

cidades.php

<?

//CONECTA AO MYSQL

require_once("../biblioteca/connectmysql.php");

//RECEBE PARÃMETRO

$pEstado = $_POST["estado];

//QUERY

$sql = "

SELECT a.idcidade, a.nome

FROM cidade a

WHERE a.idestado = ".$pEstado."

ORDER BY a.nome";

//EXECUTA A QUERY

$sql = mysql_query($sql);

$row = mysql_num_rows($sql);

//VERIFICA SE VOLTOU ALGO

if($row) {

//XML

$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";

$xml .= "<cidade>\n";

//PERCORRE ARRAY

for($i=0; $i<$row; $i++) {

$codigo = mysql_result($sql, $i, "idcidade");

$descricao = mysql_result($sql, $i, "nome");

$xml .= "<cidade>\n";

$xml .= "<codigo>".$codigo."</codigo>\n";

$xml .= "<descricao>".ucfirst(strtolower($descricao))."</descricao>\n";

$xml .= "</cidade>\n";

}//FECHA FOR

$xml.= "</cidade>\n";

//CABEÇALHO

Header("Content-type: application/xml; charset=iso-8859-1");

}//FECHA IF (row)

//PRINTA O RESULTADO

echo $xml;

?>

Editado por frnd
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...