• 0
Sign in to follow this  
Renato Cast

Problemas Com Ajax E Asp

Question

Bom noite pessoal... to apanhando aqui ao fazer uma requisição ao meu banco... trata-se de um combo dinamico onde o usuario escolhe a linha do produto, nisso, é disparado o evento que envia a ID da linha a outra página, onde é trabalho para retornar o valor do segundo combo, o de produtos. O problema é que ele retorna vazio, e existem zilhoes de informações no banco. alguém pode me ajudar?

arquivo "listagem .asp" 'trabalha a informação e retorna para a primeira pagina

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="conexao.asp"-->

<%
'RECEBE PARÃMETRO                  
linha = request.Form("linha")           

'QUERY 
set linha=con.execute("SELECT * FROM Linha WHERE ID = "&linha) 
Linha = linha("Linha")          
set print=con.execute("SELECT * FROM Cadastro WHERE Linha = '"&Linha&"' ORDER BY Produtos ASC")
ID = print("ID")
Produto = print("Produto") 

'XML
xml  = "<%xml version=\'1.0\' encoding=\'ISO-8859-1\'%>\n";
xml .= "<produto>\n";
   
'PERCORRE ARRAY            
while not print.eof
{  
      codigo = ID
      descricao = Produto
      xml .= "<produtos>\n";    
      xml .= "<codigo>".codigo."</codigo>\n";                  
      xml .= "<descricao>".descricao."</descricao>\n";         
      xml .= "</produtos>\n";    
}
print.movenext
wend                 

xml.= "</produto>\n";
   
'CABEÇALHO
Header("Content-type: application/xml; charset=iso-8859-1");                                              

'PRINTA O RESULTADO
response.Write(xml)       
%>
Página "produto.asp" 'busca onde o combo deve ser preenchido, mas retorna vazio....
<script language="JavaScript">

   function Dados(valor) {
      //verifica se o browser tem suporte a ajax
      try {
         ajax = new ActiveXObject("Microsoft.XMLHTTP");
      } 
      catch(e) {
         try {
            ajax = new ActiveXObject("Msxml2.XMLHTTP");
         }
         catch(ex) {
            try {
               ajax = new XMLHttpRequest();
            }
            catch(exc) {
               alert("Esse browser não tem recursos para uso do Ajax");
               ajax = null;
            }
         }
      }
      //se tiver suporte ajax
      if(ajax) {
         //deixa apenas o elemento 1 no option, os outros são excluídos
         document.frmAjax.listProdutos.options.length = 1;
         
         idOpcao  = document.getElementById("opcoes");
         
         ajax.open("POST", "listagem.asp", true);
         ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
         
         ajax.onreadystatechange = function() {
            //enquanto estiver processando...emite a msg de carregando
            if(ajax.readyState == 1) {
               idOpcao.innerHTML = "Carregando...!";   
            }
            //após ser processado - chama função processXML que vai varrer os dados
            if(ajax.readyState == 4 ) {
               if(ajax.responseXML) {
                  processXML(ajax.responseXML);
               }
               else {
                   //caso não seja um arquivo XML emite a mensagem abaixo
                   idOpcao.innerHTML = " Primeiro selecione a linha ";
               }
            }
         }
         //passa o código do estado escolhido
         var params = "linha="+valor;
         ajax.send(params);
      }
   }
   
   function processXML(obj){
      //pega a tag cidade
      var dataArray   = obj.getElementsByTagName("produto");
      
      //total de elementos contidos na tag cidade
      if(dataArray.length > 0) {
         //percorre o arquivo XML paara extrair os dados
         for(var i = 0; i < dataArray.length; i++) {
            var item = dataArray[i];
            //contéudo dos campos no arquivo XML
            var codigo    =  item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
            var descricao =  item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
            
            idOpcao.innerHTML = " Selecione uma das opções abaixo ";
            
            //cria um novo option dinamicamente  
            var novo = document.createElement("option");
                //atribui um ID a esse elemento
                novo.setAttribute("id", "opcoes");
                //atribui um valor
                novo.value = codigo;
                //atribui um texto
                novo.text  = descricao;
                //finalmente adiciona o novo elemento
                document.frmAjax.listProdutos.options.add(novo);
         }
      }
      else {
        //caso o XML volte vazio, printa a mensagem abaixo
        idOpcao.innerHTML = " Voltou vazio ";
      }      
   }

</script>

<form action="busca.asp" method="post" name="frmAjax">
          <table width="93%" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td width="25%" height="38"> </td>
              <td width="75%"> </td>
            </tr>
            <tr>
              <td height="22"> </td>
              <td><div align="right">
              <%
              set print=con.execute("SELECT * FROM Linha ORDER BY ID ASC")
              Linha = print("Linha")
              ID = print("ID")
              %>
            <select name="listLinhas" id="listLinhas" style="width:200" onChange="Dados(this.value);">
            <option value="0">Selecine a Linha</option>
            <%
            lin = ""
            while not print.eof
            %>
            <option value="<% =print("ID")%>"><% =print("Linha")%></option>
            <%
            print.MoveNext
            wend
            %>
            </select>
              </div></td>
            </tr>
            <tr>
              <td height="30"> </td>
              <td><div align="right">
                 <select name="listProdutos" id="listProdutos" style="width:200">
                          <option id="opcoes" value="0"></option>
                 </select>
              </div></td>
            </tr>
            <tr>
              <td height="27" colspan="2"><div align="right">
                  <input type="submit" name="Submit" value="Localizar" style="background-color:#999999; color:#FFFFFF; font-family:Verdana; font-size:12px; border:thin; border-color:#999999; width:80">
              </div></td>
            </tr>
          </table>
        </form>

Bom pessoal, é isso ai... espero ajuda.. vlw

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Eu to achando que o problema não é no Ajax e sim na tua consulta, porque é ela que irá trazer os resultados.

Imprima a consulta e veja o que retorna, se não está vindo nada, o problema é na query mesmo. Confira se a ID está sendo passada corretamente

Share this post


Link to post
Share on other sites
  • 0

Entaum Andreia, já conferi os valores passados... está pssando certinho... o ID é passado corretamente... você vê algum possivel outro erro nesse código? já revirei ele do avesso e nada faz retornar o valor.... :(

Share this post


Link to post
Share on other sites
  • 0

Voce já jogou a consulta que retorna na tela no BD?

bom, onde eu estou agora não tem como testar seu codigo... só quando estiver em casa. Enquanto isso vamos ver se alguém mais pode te ajudar

Ah se quiser, na area de Scripts desta seção.. tem exemplos de Ajax. Eu mesmo já postei um exemplo de combos com Ajax.

Share this post


Link to post
Share on other sites
  • 0

Andreia, consegui terminar o trabalho. Mudei a requisição do xml.... vou postar aqui embaixo pra você ver como ficou... Vlw pela sua ajuda... eu consultei seu post sobre ajax também.. hehe... parabéns...

num = Request.Form("tipo")

Set oConn = Server.CreateObject("ADODB.Connection")set tar = oConn.Execute("SELECT * FROM Linha WHERE ID = "&num)

Linha = tar("Linha")

str = Linha

set tar = oConn.Execute("SELECT * FROM Cadastro WHERE Linha LIKE '"&str&"'")

while not tar.eof

ID = tar("ID")

Produto = tar("Produto")

Codigo = tar("Codigo")

Response.Write "<option value=" & ID & ">" & Server.URLEncode(tar("Produto")) & " ( " & Codigo & " )</option>"

tar.movenext

wend

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this