Putz !!!! fun fo !!
<html>
<head>
<title>PHP + AJAX</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type='text/javascript'>
// Função que recupera os dados da pesquisafunction catchDados(valor)
function catchDados(valor) {
// Instancia o objeto
ajax = new XMLHttpRequest();
// Recupera o combo-box ESTADOS
estados = document.getElementById('estados');
// Recupera o combo-box CIDADES
cidades = document.getElementById('cidades');
if (ajax) {
// Limpa o combo-box CIDADES
cidades.options.length = 1;
// Faz a requisição
ajax.open("POST", "consulta.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
// Vamos processar os estados da requisição
ajax.onreadystatechange = function() {
// Carregando...
if (ajax.readyState == 1) {
cidades.innerHTML = "Carregando...";
}
// Ao receber a resposta
if (ajax.readyState == 4 ) {
if (ajax.responseXML) {
montaCombo(ajax.responseXML);
} else {
cidades.innerHTML = "Selecione o estado.";
}
}
}
// Envia os parâmetros
var params = "estado="+valor;
ajax.send(params);
}
function montaCombo(XML){
// Array com os dados das cidades
var CIDADES = XML.getElementsByTagName("cidade");
// Recupera o combo-box CIDADES
cidades = document.getElementById('cidades');
// Verifica se a consulta retornou alguma coisa
if (CIDADES.length > 0) {
// Lemos todo o arquivo XML
for(var i = 0; i < XML.length; i++) {
item = XML[i];
ID = item.getElementsByTagName("id")[0].firstChild.nodeValue;
NOME = item.getElementsByTagName("nome")[0].firstChild.nodeValue;
cidades.innerHTML = "Escolha...";
// Aqui e DOM, assunto para um outro artigo
// Cria os dados dentro do combo
opt = document.createElement("option");
opt.value = id;
opt.text = nome;
cidades.options.add(opt);
}
} else {
// caso o XML retorne em branco
cidades.innerHTML = "Escolha o estado.";
}
}
}
</script>
</head>
<body>
<h1>AJAX + PHP</h1>
Recuperando dados sem refresh, usando AJAX.
<br><br>
<form>
Estado:
<select name="estados" id="estados" onChange="catchDados(this.value);">
<option value="">Escolha...</option>
<?php
/*
* Carregando os estados
*/
$conexao = mysql_connect("localhost", "root", "") OR DIE("Erro na conexão.");
$banco = mysql_select_db("ajax");
$resultado = mysql_query( sprintf("SELECT id, nome FROM estados ORDER BY nome ASC") );
while ($record = mysql_fetch_array($resultado, MYSQL_ASSOC)) {
printf("<option value=\"%s\">%s</option>\n", $record['id'], $record['nome']);
}
?>
</select>
<br>
Cidade:
<select name="cidades">
<option id="" value="">Escolha o estado...</option>
</select>
</form>
</body>
</html>
O Problema é que agora ele não está retornando nada ! no segundo combo mas não dá erro deve ser erro de consulta bo banco !
da uma olhada !
<?php
/*
* Arquivo consulta.php
*/
// Abre uma conexão com o banco
$conexao = mysql_connect("localhost", "root", "") OR DIE("Erro na conexão.");
// Seleciona o banco a ser utilizado
$banco = mysql_select_db("ajax") OR DIE("Erro ao selecionar o banco.");
// Realiza a consulta
$resultado = mysql_query( sprintf("SELECT id, nome FROM cidades WHERE estado=%d", $_REQUEST["estados"]) );
// Gera o XML com o resultado desta pesquisa
$XML = sprintf("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n");
while ( $record = mysql_fetch_array($resultado, MYSQL_ASSOC) ) {
$XML .= sprintf("<cidade>\n");
$XML .= sprintf("<id>%s</id>\n", $record['id']);
$XML .= sprintf("<nome>%s</nome>\n", $record['nome']);
}
// HEADER do arquivo XML
Header("Content-type: application/xml; charset=iso-8859-1");
// Mostra os dados
printf("<cidades>\n%s</cidades>\n", $XML);
?>
Ve algu de errado ?

???
Edição feita por: JONNY_RC13, 05/09/2008, 23:06.