node - loop json array jquery




jquery loop em dados Json usando $.each (3)

Você converteu seus dados de string em objeto JavaScript?

Você pode fazer isso com data = eval('(' + string_data + ')'); ou, o que é mais seguro, data = JSON.parse(string_data); mas depois só funciona em FF 3.5 ou se você incluir json2.js

jQuery desde 1.4.1 também tem função para isso, $.parseJSON() .

Mas, na verdade, $.getJSON() deve dar a você um objeto json já analisado, então você deve verificar tudo completamente, há um pequeno erro enterrado em algum lugar, como você pode ter esquecido de citar algo no json, ou um dos colchetes está faltando.

Eu tenho o seguinte JSON retornado em uma variável chamada data.

ESTE É O JSON QUE É DEVOLVIDO ...

[ 
{"Id": 10004, "PageName": "club"}, 
{"Id": 10040, "PageName": "qaz"}, 
{"Id": 10059, "PageName": "jjjjjjj"}
]

e estou tentando percorrer a coleção usando $ .each, mas estou com problemas onde o alerta está mostrando indefinido. Eu tentei muita sintaxe diferente, mas não consigo descobrir isso.

O JQuery que estou usando é

$.each(data, function(i, item) {
    alert(item.PageName);
});

Alguém pode me apontar na direção certa?

EDIT Este é o código que estou usando para pegar os dados

$.getJSON('/Cms/GetPages/123', null, function(data) {
  fillSelect(data);
});

e esta é a função que é chamada de volta

function fillSelect(data) {
  alert(data);
  $.each(data, function(i, item) {
    alert(item.PageName);
  });
}

EDIT 2 Isso é um pouco confuso, de acordo com os documentos que deve funcionar como eu tenho, mas isso não acontece. De acordo com o violinista, o cabeçalho mostra:

Content-Type: application/json; charset=utf-8

e o JSON está exatamente correto acima. Eu estou usando o chrome se isso faz alguma diferença. Testará no IE e no FF ....

EDITAR 3

usando $ .get produz

"[\r\n {\r\n \"Id\": 10041,\r\n \"PageName\": \"01234567890\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10001,\r\n \"PageName\": \"about\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10056,\r\n \"PageName\": \"fdgdfgdfg\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10052,\r\n \"PageName\": \"hjkhjk\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10059,\r\n \"PageName\": \"jjjjjjj\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10057,\r\n \"PageName\": \"qqqqq\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10054,\r\n \"PageName\": \"qwqw\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n }\r\n]"

getJSON irá avaliar os dados para JSON para você, contanto que o tipo de conteúdo correto seja usado. Certifique-se de que o servidor esteja retornando os dados como application / json.


$.each(JSON.parse(result), function(i, item) {
    alert(item.number);
});




foreach