Atualização de combos inferiores baseado nos combos superiores
Publicado por Hudson Carlos de Oliveira 25/03/2009
[ Hits: 6.124 ]
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>
Jogo Snake feito em TypeScript e Phaser 2 (com gráficos)
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (3)
HD externo modelo SDK SSD com 15,26 TiB aparece como unidade não aloc... (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta