No retorno de chamada de sucesso do jQuery AJAX, quero fazer um loop sobre os resultados do objeto. Este é um exemplo de como a resposta aparece no Firebug.
[
{"TEST1":45,"TEST2":23,"TEST3":"DATA1"},
{"TEST1":46,"TEST2":24,"TEST3":"DATA2"},
{"TEST1":47,"TEST2":25,"TEST3":"DATA3"}
]
Como posso percorrer os resultados para ter acesso a cada um dos elementos? Eu tentei algo como abaixo, mas isso não parece estar funcionando.
jQuery.each(data, function(index, itemData) {
// itemData.TEST1
// itemData.TEST2
// itemData.TEST3
});
Respostas:
você pode remover o loop externo e substituir
this
pordata.data
:Você estava perto:
Você tem uma matriz de objetos / mapas para que o loop externo itere sobre eles. O loop interno itera sobre as propriedades em cada elemento do objeto.
fonte
$(data)
vez dedata
, caso contrário, a variávelk
sempre retornará 0. #Você também pode usar a função getJSON :
Esta é realmente apenas uma reformulação da resposta de ifesdjeen, mas achei que poderia ser útil para as pessoas.
fonte
Se você usa o Fire Fox, basta abrir um console (use a tecla F12) e tente o seguinte:
espero que ajude
fonte
Para qualquer pessoa que esteja presa a isso, provavelmente não está funcionando porque a chamada ajax está interpretando os dados retornados como texto - ou seja, ainda não é um objeto JSON.
Você pode convertê-lo em um objeto JSON manualmente, usando o comando parseJSON ou simplesmente adicionando a propriedade dataType: 'json' à sua chamada ajax. por exemplo
fonte
Uncaught TypeError: Cannot use 'in' operator to search for '188' in
recebendo esse erro.Acesse a matriz json como faria com qualquer outra matriz.
fonte
[0]
, a próxima[1]
e assim por diante.Foi o que descobri para visualizar facilmente todos os valores de dados:
fonte
Experimente a função jQuery.map , funciona muito bem com mapas.
fonte
se você não quer um alerta, ou seja, você quer html, faça isso
NOTA: use "anexar" e não "html"; caso contrário, o último resultado será o que você verá na sua exibição em html
seu código html deve ficar assim
Você também pode estilizar (adicionar classe) a div no jquery antes de renderizá-lo como html
fonte
Se você estiver usando o método abreviado da função de chamada ajax JQuery, como mostrado abaixo, os dados retornados precisarão ser interpretados como um objeto json para que você possa percorrer.
fonte
Sou parcial à função de seta ES2015 para encontrar valores em uma matriz
Checkout Array.prototype.find () AQUI
fonte
$each
funcionará .. Outra opção é o jQuery Ajax Callback para resultado da matrizfonte
Eu uso .map para foreach. Por exemplo
fonte