Ir para conteúdo

Arquivado

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

Djalma Manfrin

Exibir array recebido pelo JSON com AJAX

Recommended Posts

Olá Pessoal.

 

Estou com o seguinte problema. Adaptei este código javascript pra receber um array do banco de dados.

$('#td_dependentes button').click(function(){
    $.ajax({
            url : 'pages/funcionario/consultar_dependentes.php', /* URL que será chamada */ 
            type : 'POST', /* Tipo da requisição */ 
            data: {
             id: $(this).val()
            },
            dataType: 'json', /* Tipo de transmissão */
            success: function(data){             
                $('#nome').text(data.nome);
                $('#sexo').text(data.sexo);
                $('#idade').text(data.idade);
            }
       });   
    //return false; 
});

No arquivo "consultar_dependentes.php" faço o filtro referente ao 'id' recebido pelo evento '.click()'. Este é o código:

$id = $_POST['id'];
 
$fil = new filho();
$fil->extras_select = "WHERE id_funcionario = $id"; // 
$fil->selecionaTudo($fil);
while($res = $fil->retornaDados()):
     $filhos = array(
          'nome'=>$res->nome,
          'sexo'=> strtoupper($res->sexo),
          'idade'=> calculaIdade($res->data_nasc)
     );
     echo json_encode($filhos);
endwhile;
 
//echo json_encode($filhos);

No firebug analisei a saída do código e quando o 'json_encode()' vai fora o while o retorno é o último elemento contido no array 'filhos'. Mas quando coloco dentro while, o retorno acontece perfeitamente como desejo, ou seja, um array com dois ou mais elementos contido nele.

 

Para exibir apenas um elemento utilizo o código javascript acima com o 'json_encode($filhos)' pra fora do while e funciona perfeitamente. Mas minha dúvida e o motivo deste post. Como faço para exibir um array?

Tentei utilizar o laço de repetição 'for' na função javascript acima como havia encontrado na internet desta maneira:

success: function(data){
     for( var i in data.filhos.length){
          $('#nome').text(data.filhos[i].nome);
     }
}

Mas não deu certo. O Fato é que não sei como exibir este array e também não sei se esta maneira está correta.

Como dito antes, o código javascript é adaptado a minha necessidade, que consiste em gerar uma tabela de filhos sem atualizar a página conforme o filtro estabelecido pelo usuário através do click na coluna da tabela gerando uma janela modal. Por este motivo utilizo AJAX com JSON. Não saberei dizer se é a forma mais correta. Sendo assim, aceito sugestões e opniões sobre todo o código. Espero ter conseguido repassar meu problema. Desde já agradeço a ajuda.

 

Fico no aguardo

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.