Jump to content
Fórum Script Brasil
  • 0

Problema Com Ajax (cidade/estado)


frnd
 Share

Question

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;

?>

Edited by frnd
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...