Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas Com Ajax E Asp


Renato Cast

Pergunta

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

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 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.

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...