Atualização de combos inferiores baseado nos combos superiores
Publicado por Hudson Carlos de Oliveira 25/03/2009
[ Hits: 6.286 ]
Homepage: http://hudsoncarlosdeoliveira.spaces.live.com
Download Pesquisa_detalhada.rar
Este script Ajax/Javascript/Asp funciona perfeitamente. Lanço um desafio para quem consegue fazê-lo funcionar com PHP/MySQL, lembrando que para isto basta traduzir os scripts ASP para PHP
O mesmo está disponível para download e como código fonte. Ele funciona perfeitamente, executando-se até o arquivo "executa.asp", já que a partir daí trata-se de sistema múltiplo de combos, e até agora não houve êxito deste script Ajax/ASP, somente no Ajax/PHP.
Por isso, para aqueles que quiserem se aventurar, o arquivo "executa2.asp" já está pronto, e o banco de dados bairros também (para download, é claro!). O script já está todo programado e já foi testado, bastando baixá-lo e descompactá-lo no seu computador.
Lembrando também que terá que possuir o servidor compatível com ASP em seu computador, geralmente IIS (Internet Information Service), versão 3 ou superior, o que vem geralmente no CD de instalação do Windows XP SP2 (Service Pack 2) ou superior. Quem não possui este na máquina tem que instalá-lo ou outro equivalente que rode ASP, se não o script não funcionará.
O Código fonte é este: 1)Arquivo: "Index.php": <%@ Language=VBScript %> <HTML> <HEAD> <script> // A função abaixo pega a versão mais nova do xmlhttp do IE e verifica se é Firefox. Funciona nos dois. function createXMLHTTP() { try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); alert(ajax); } catch(ex) { try { ajax = new XMLHttpRequest(); } catch(exc) { alert("Esse browser não tem recursos para uso do Ajax"); ajax = null; } } return ajax; } var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; for (var i=0; i < arrSignatures.length; i++) { try { var oRequest = new ActiveXObject(arrSignatures[i]); return oRequest; } catch (oError) { } } throw new Error("MSXML is not installed on your system."); } function recuperarCarro(sTipo) { // Criação do objeto XMLHTTP var oHTTPRequest = createXMLHTTP(); // Abrindo a solicitação HTTP. O primeiro parâmetro informa o método post/get // O segundo parâmetro informa o arquivo solicitado que pode ser asp, php, txt, xml, etc. // O terceiro parametro informa que a solicitacao nao assincrona, // Para solicitação síncrona, o parâmetro deve ser false oHTTPRequest.open("post", "executa.asp", true); // Para solicitações utilizando o método post, deve ser acrescentado este cabecalho HTTP oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // A função abaixo é executada sempre que o estado do objeto muda (onreadystatechange) oHTTPRequest.onreadystatechange=function() { // O valor 4 significa que o objeto já completou a solicitação if (oHTTPRequest.readyState==4){ // Abaixo o texto é gerado no arquivo executa.asp e colocado no div document.all.divCarros.innerHTML = oHTTPRequest.responseText; } } // Abaixo é enviada a solicitação. Note que a configuração // do evento onreadystatechange deve ser feita antes do send. oHTTPRequest.send("estado=" + sTipo); } </script> </HEAD> <body onload="recuperarCarro(document.formulario.cmbEstado.value);"> <form id="formulario" name="formulario"> <table border="0"> <tr> <td>Estado:</td> <td> <select name="cmbEstado" id="cmbEstado" onchange="recuperarCarro(this.value)" style="WIDTH:200px"> <% Dim oConn, oRS Set oConn = Server.CreateObject ("ADODB.Connection") oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("banco.mdb") set oRS = oConn.Execute("SELECT * FROM tab_estados ORDER BY id_estado") while not oRS.eof Response.Write "<option value=" & oRS(0) & ">" & oRS(1) & "</option>" oRS.movenext wend %> </select> </td> </tr> <tr> <td>Cidade:</td> <td><div id="divCarros"></div></td> </tr> </table> </form> </body> </HTML> 2) Arquivo "executa.asp": <select name="cmbCidades" id="cmbCidades" style="width:100%;" onChange="recuperarCarro_2()"> <% Dim oConn, oRS Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("banco.mdb") set oRS = oConn.Execute("SELECT * FROM tab_cidades where estado = " & Request.Form("estado") & " ORDER BY idcidade") while not oRS.eof Response.Write "<option value=" & oRS(0) & ">" & server.HTMLEncode(oRS(2)) & "</option>" oRS.movenext wend %> </select> 3) Arquivo "executa2.asp": <select name="cmbBairros" id="cmbBairros" style="width:100%;"> <% Dim oConn, oRS Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("banco.mdb") set oRS = oConn.Execute("SELECT * FROM tab_bairros where cidade = " & Request.Form("cidade") & " ORDER BY id_bairros") while not oRS.eof Response.Write "<option value=" & oRS(0) & ">" & server.HTMLEncode(oRS(3)) & "</option>" oRS.movenext wend %> </select>
Mostra o Endereço IP do visitante
Script de barra de maximinizar
Palheta de cores utilizando Json e javascript não obstrutivo
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Sinto uma leve lentidão ao arrastar, miniminizar e restauras as janela... (0)
Zorin OS - Virtual Box não consigo abrir maquinas virtuais (6)
Iinstalar o Scanner Kodak i940 no Linux Mint 19/20? (3)