Ir para conteúdo

POWERED BY:

Arquivado

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

Victor_Java

Preenchimento de Combo AJAX

Recommended Posts

Galera, estou aprendendo AJAX no meu trabalho, e estou quebrando a cabeça para fazer um combo que preenche outro.

 

Estou tentando retornar a resposta para um array mas ele sempre retorna vazio, acho que não estou sabendo tratar a resposta, ou usar o parametro certo para o método getElementsByTagName.

 

Vou colar e quem puder me indica o que está errado:

 

 

JSP (Tags do Struts):

   1. // ...    
   2.                 <label for="select1">Módulo:</label>    
   3.                 <html:select property="moduloAuditoria" styleId="moduloAuditoria" onchange="recuperaFuncionalidades(this.options[this.selectedIndex].value);">       
   4.                     <html:options name="listMdlAuditoria" collection="listMdlAuditoria" property="identificador" labelProperty="nome" />       
   5.                 </html:select>      
   6.                     
   7.                 <label for="select1">Funcionalidade:</label>    
   8.                 <html:select property="funcionalidadeModulo" styleId="funcionalidadeModulo" onchange="recuperaAcoes(this.options[this.selectedIndex].value);">       
   9.                     <html:options name="listFuncionalidadeModulo" collection="listFuncionalidadeModulo" property="identificador" labelProperty="nome"/>       
  10.                 </html:select>      
  11. ...    

 

AJAX:

 

   1. function recuperaFuncionalidades(id)    
   2. {     
   3.     listaFuncionalidades = document.getElementsByName("funcionalidadeModulo");     
   4.     ajax.open("POST", action, true);     
   5.     ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");     
   6.         
   7.     ajax.onreadystatechange = function(){    
   8.     
   9.         //enquanto estiver processando...emite a msg de carregando     
  10.         alert('estado:'+ajax.readyState);    
  11.         if(ajax.readyState == 1) {     
  12.             listaFuncionalidades.value = "Carregando...";  // OBS: Não escreve isso no combo não sei porque !!    
  13.         }     
  14.             
  15.         //após ser processado - chama função processXML que vai varrer os dados     
  16.         if(ajax.readyState == 4 ) {     
  17.                 
  18.             if(ajax.responseXML) {    
  19.                 processXMLFunc(ajax.responseXML);     
  20.             }     
  21.             else {     
  22.                 //caso não seja um arquivo XML emite a mensagem abaixo     
  23.                 listaFuncionalidades.innerHTML = "Selecione a categoria";     
  24.             }     
  25.         }     
  26.             
  27.     }     
  28.     alert('Envia o Pedido');    
  29.     ajax.send("operacao=buscaFuncs&id=" + id);    
  30. }    
  31.         
  32. function processXMLFunc(obj){     
  33.         
  34.     alert('Entrou processXMLFunc');    
  35.         
  36.         
  37.     var dataArray = obj.getElementsByTagName("listFuncionalidadeModulo");     
  38.     alert('achou:'+parseInt(dataArray.length));    
  39.         
  40.                               //total de elementos contidos    
  41.     if(dataArray.length > 0) {     
  42.         alert(101);    
  43.         //percorre o arquivo XML paara extrair os dados     
  44.         for(var i = 0 ; i < dataArray.length ; i++) {     
  45.               
  46.             //AINDA NÃO ALTEREI ESSA PARTE NO EXEMPLO PQ NUNCA CHEGO ATÉ AKI  
  47.             var item = dataArray[i];     
  48.     
  49.             //contéudo dos campos no arquivo XML     
  50.             var codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue;     
  51.             var descricao = item.getElementsByTagName("descricao")[0].firstChild.nodeValue;     
  52.             idOpcao.innerHTML = ""; //Selecione a seção     
  53.                 
  54.             //cria um novo option dinamicamente     
  55.             var novo = document.createElement("option");     
  56.             //atribui um ID a esse elemento     
  57.             novo.setAttribute("id", "opcoes");     
  58.             //atribui um valor     
  59.             novo.value = codigo;     
  60.             //atribui um texto     
  61.             novo.text = descricao;     
  62.             //finalmente adiciona o novo elemento     
  63.             document.frmAjax.codSec.options.add(novo);     
  64.         }     
  65.     }     
  66.     else {     
  67.         alert('else');    
  68.         //caso o XML volte vazio, printa a mensagem abaixo     
  69.         listaFuncionalidades.innerHTML = "Selecione a categoria"; // Não exibe essa mensagem em lugar nenhum !!    
  70.     }     
  71. }     

 

É produzida a seguinte saída nos Alerts:

Envia o Pedido

estado:1

estado:2

estado:3

estado:4

Entrou processXMLFunc

achou: 0

else

 

(E nada acontece depois)

 

Por favor, alguem me ajuda ?!!!?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o XML está sendo gerado corretamente?

Eu fiz um exemplo bem simples, usando jQuery.. com retorno jSON:

 

http://forum.imasters.com.br/index.php?/topic/365795-combos-dependentes-ajax-jquery/

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.