Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 76
Sexo: Masculino
Localização: Porto Alegre
Contato:

Meu select com ajax não tá funcionando

06-02-2009 21:43

To aprendendo ajax agora mas nunca consegui fazer um código funcionar. O que estou fazendo de errado nesse código?

pages/pesquisa.php
<!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript" src="../files/01.js"></script> </head> <body> <form action="r_imovel.php" method="post"> <select name="estados" id="estados" class="inputi" onChange="ajaxComboBox('01_cidades.php','cidades');"> <option value="NDA" selected>indiferente</option> <option value="MT">Mato Grosso</option> <option value="SP">São Paulo</option> </select> <select name="cidades" id="cidades" class="inputi"> <option>-- Escolha um Estado --</option> </select> </body> </html>

pages/01_cidades.php
<?php header("Content-type: text/xml; charset=ISO-8859-1"); print '<?xml version="1.0" encoding="ISO-8859-1"?>'; ?> <cidades> <?php $link = mysql_pconnect("**************", "****", "****************") or die("Não pude conectar: " . mysql_error()); mysql_select_db('artigos', $link) or die ('Não foi possível usar db: ' . mysql_error()) $result = mysql_query("SELECT cidades.id,cidades.nome FROM estados,cidades WHERE estados.sigla = '{$_GET['uf']}' AND estados.id = cidades.id_estado ORDER BY cidades.nome" or die("Query invalida: " . mysql_error()); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { printf("<nome id=\"%d\">%s</nome>\n", $row[0],$row[1]); } mysql_close($link); ?> </cidades>

files/01.js
var HttpReq = null; var dest_combo = null; function ajaxComboBox(url, comboBox){ dest_combo = comboBox; var indice = document.getElementById('estados').selectedIndex; var sigla = document.getElementById('estados').options[indice].getAttribute('value'); url = url + '?uf=' + sigla; if (document.getElementById) { //Verifica se o Browser suporta DHTML. if (window.XMLHttpRequest) { HttpReq = new XMLHttpRequest(); HttpReq.onreadystatechange = XMLHttpRequestChange; HttpReq.open("GET", url, true); HttpReq.send(null); } else if (window.ActiveXObject) { HttpReq = new ActiveXObject("Microsoft.XMLHTTP"); if (HttpReq) { HttpReq.onreadystatechange = XMLHttpRequestChange; HttpReq.open("GET", url, true); HttpReq.send(); } } } } function XMLHttpRequestChange() { if (HttpReq.readyState == 4 && HttpReq.status == 200){ //Verifica se o arquivo foi carregado com sucesso. var result = HttpReq.responseXML; var cidades = result.getElementsByTagName("nome"); document.getElementById(dest_combo).innerHTML = ""; for (var i = 0; i < cidades.length; i++) { new_opcao = create_opcao(cidades[i]); document.getElementById(dest_combo).appendChild(new_opcao); } } } function create_opcao(cidade) { //Cria um novo elemento OPTION. //return opcao.cloneNode(true); var new_opcao = document.createElement("option"); //Cria um OPTION. var texto = document.createTextNode(cidade.childNodes[0].data); //Cria um texto. new_opcao.setAttribute("value",cidade.getAttribute("id")); //Adiciona o atributo de valor a nova opção. new_opcao.appendChild(texto); //Adiciona o texto a OPTION. return new_opcao; // Retorna a nova OPTION. }

no banco está assim:

tabela estados
id sigla nome 1 MT Mato Grosso 2 SP São Paulo

tabela cidades
id id_estado nome 1 1 Cuiabá 2 1 Várzea Grande 3 2 São Paulo 4 2 Santo André 5 2 Limeira 6 2 Barueri

Simplesmente quando seleciono o estado, não acontece nada. Eu não tenho a menos idéia de onde está o erro e também não sei como encontra-lo.
ajuda pls :help
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17720
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Meu select com ajax não tá funcionando.

06-02-2009 22:07

Tem esse script no fórum, mas, dei uma olhada por alto não ví uma referência ao segundo select.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 76
Sexo: Masculino
Localização: Porto Alegre
Contato:

Meu select com ajax não tá funcionando

06-02-2009 22:08

correção que na correria esqueci de colocar.

na pages/pesquisa.php form está fechado com a tag </form>
<!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript" src="../files/01.js"></script> </head> <body> <form action="r_imovel.php" method="post"> <select name="estados" id="estados" class="inputi" onChange="ajaxComboBox('01_cidades.php','cidades');"> <option value="NDA" selected>indiferente</option> <option value="MT">Mato Grosso</option> <option value="SP">São Paulo</option> </select> <select name="cidades" id="cidades" class="inputi"> <option>-- Escolha um Estado --</option> </select> </form> </body> </html>

0
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 76
Sexo: Masculino
Localização: Porto Alegre
Contato:

Meu select com ajax não tá funcionando

06-02-2009 22:10

A referência ao segundo select "cidades" está no final do files/01.js
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17720
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Meu select com ajax não tá funcionando

06-02-2009 22:36

Revê teu js, o segundo select pode ser chamado pelo name ou id "cidades", não tem nada relacionado a isso.

Depois dá uma olhada
http://www.codigosnaweb.com/forum/viewt ... f=13&t=505
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 76
Sexo: Masculino
Localização: Porto Alegre
Contato:

Meu select com ajax não tá funcionando

06-02-2009 23:35

Eu não entendo ajax, vou começar a entender quando algo que eu fizer der certo...

Segui esse tutorial aqui e no modelo o código funciona:
http://www.hospedia.com.br/artigos/1/aj ... _ajax.html
0
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 76
Sexo: Masculino
Localização: Porto Alegre
Contato:

Meu select com ajax não tá funcionando

06-02-2009 23:50

valeu pelo "Escolher estado e listar cidades correspondentes", funciona retinho e sem perder tempo com o banco. :halfsmile

quebra um galho enorme! hehehehe
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17720
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Meu select com ajax não tá funcionando

07-02-2009 02:58

:smile
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 76
Sexo: Masculino
Localização: Porto Alegre
Contato:

Meu select com ajax não tá funcionando

07-02-2009 14:08

Obs.: tem um incoveniente, quando vai passar os valores selecionados (estado e cidade) pelo form, o estado vem em número.
Essa é fácil:

<? function uf_decode($code) { switch ($code) { case 0: $res = 'Acre'; break; case 1: $res = 'Alagoas'; break; case 2: $res = 'Amazonas'; break; case 3: $res = 'Amapá'; break; case 4: $res = 'Bahia'; break; case 5: $res = 'Ceará'; break; case 6: $res = 'Distrito Federal'; break; case 7: $res = 'Espírito Santo'; break; case 8: $res = 'Goiás'; break; case 9: $res = 'Maranhão'; break; case 10: $res = 'Minas Gerais'; break; case 11: $res = 'Mato Grosso do Sul'; break; case 12: $res = 'Mato Grosso'; break; case 13: $res = 'Pará'; break; case 14: $res = 'Paraíba'; break; case 15: $res = 'Pernambuco'; break; case 16: $res = 'Piauí'; break; case 17: $res = 'Paraná'; break; case 18: $res = 'Rio de Janeiro'; break; case 19: $res = 'Rio Grande do Norte'; break; case 20: $res = 'Rondônia'; break; case 21: $res = 'Roraima'; break; case 22: $res = 'Rio Grande do Sul'; break; case 23: $res = 'Santa Catarina'; break; case 24: $res = 'São Paulo'; break; case 25: $res = 'Sergipe'; break; case 26: $res = 'Tocantins'; break; default: $res = ''; } return $res; } // Convertendo $estado = uf_decode($HTTP_POST_VARS['estados']); echo 'Estado: '.$estado; ?>

Mais uma coisa. Em vez de:
cidades[0] = ''; cidades[1] = ''; cidades[2] = ''; cidades[3] = ''; cidades[4] = ''; cidades[5] = ''; cidades[6] = ''; cidades[7] = ''; cidades[8] = ''; cidades[9] = ''; cidades[10] = ''; cidades[11] = ''; cidades[12] = ''; cidades[13] = ''; cidades[14] = ''; cidades[15] = ''; cidades[16] = ''; cidades[17] = ''; cidades[18] = ''; cidades[19] = ''; cidades[20] = ''; cidades[21] = ''; cidades[22] = ''; cidades[23] = ''; cidades[24] = ''; cidades[25] = ''; cidades[26] = ''; cidades[27] = '';

Um simples for não serviria?
for(a=0; a<28; a++){ cidades[a] = ''; }

:kickup
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado