Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

NewCreative

[Resolvido] ASP + AJAX - Carregar Combo a partir de outro Combo

Recommended Posts

Boa Tarde

 

Achei o link abaixo, onde descreve como fazer o carregamento de um Combo a partir de outro.

 

http://imasters.com.br/artigo/4424/asp/carregando_uma_combo_a_partir_da_outra_utilizando_ajax/

 

O problema é que estou seguindo o exemplo sem sucesso.

 

Na primeira combo aparece certinho os dados, mas a segunda não busca as informações. Como não aparece erro nenhum não sei mais como seguir e peço ajuda.

 

-------------------------------------------------

 

Meu banco está assim:

 

pasta: controle/banco.asp (não está na raiz onde os arquivos ASP se encontram)

 

Tabelas:

*** produtos_categoria

id = autonumeração

nome = texto

 

*** produtos_subcategoria

id = autonumeração

categoria = texto

subcategoria = texto

 

-------------------------------------------------

 

Página ajax.asp

 

<%@ 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 recuperarCategoria(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("tipo=" + sTipo);
                                   }
                        </script>
            </HEAD>
            <body onload="recuperarCategoria(document.formulario.cmbTipo.value)">
                        <form id="formulario" name="formulario">
                                   <table border="0">
                                               <tr>
                                                           <td>Categoria:</td>
                                                           <td>
                                                                       <select name="cmbTipo" id="cmbTipo" onchange="recuperarCategoria(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("controle/banco.mdb")
                                                                                  set oRS = oConn.Execute("SELECT * FROM produtos_categoria ORDER BY nome")
                                                                                  while not oRS.eof 
                                                                                              Response.Write "<option value=" & oRS(0) & ">" & oRS(1) & "</option>"
                                                                                              oRS.movenext
                                                                                  wend
                                                                                  %>
                                                                       </select>
                                                           </td>
                                               </tr>
                                               <tr>
                                                           <td>Subcategoria:</td>
                                                           <td><div id="divCarros"></div>
                                                           </td>
                                               </tr>
                                    </table>
                        </form>
</body>
</HTML>

-------------------------------------------------

 

Página executa.asp

 

<select name="cmbCarros" id="cmbCarros" style="width:100%;">
            <%
            Dim oConn, oRS
            Set oConn = Server.CreateObject("ADODB.Connection")
            oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("controle/banco.mdb")
            set oRS = oConn.Execute("SELECT * FROM produtos_subcategoria where categoria = " & Request.Form("tipo") & " ORDER BY categoria")
            while not oRS.eof 
                                   Response.Write "<option value=" & oRS(0) & ">" & server.HTMLEncode(oRS(2)) & "</option>"
                                   oRS.movenext
            wend
            %>
</option>
</select>

-------------------------------------------------

 

Link para visualização do arquivo "rodando": http://www.borapesca.com.br/ajax.asp

 

-------------------------------------------------

 

Estou achando que é nestes trechos:

 

Response.Write "<option value=" & oRS(0) & ">" & oRS(1) & "</option>"

Response.Write "<option value=" & oRS(0) & ">" & server.HTMLEncode(oRS(2)) & "</option>"

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

exiatem um exemp´lo no forum, muito bom, esta funcionando ok, dá uma pesquisadad e verifique....

caso exista erro poste o numero e linha...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já pesquisei bastante, para te falar a verdade estou a quase 9 horas tentando, desde ontem.

 

Qual tópico se refere?

 

Fiz umas mudanças neste código, agora está exibindo os resultados no segundo campo, porém sem filtro, exibe todos resultados da tabela.

 

Aparentemente não lê o: where categoria = " & tipo & "

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.