цикл jQuery на данных Json с помощью $ .each

Мне возвратили следующую JSON в переменной, названной данными.

ЭТО - JSON, КОТОРЫЙ ВОЗВРАЩАЕТСЯ...

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

и я пытаюсь циклично выполниться через набор с помощью $ .each, но я сталкиваюсь с проблемами, где предупреждение показывает неопределенный. Я попробовал много другого синтаксиса, но, может казаться, не понимаю это.

JQuery, который я использую,

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

Кто-либо может указать на меня в правильном направлении?

ОТРЕДАКТИРУЙТЕ Это - код, который я использую для захвата данных

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

и это - функция, которая призвана, перезванивают

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

ОТРЕДАКТИРУЙТЕ 2, Это немного сбивает с толку меня, согласно документам, это должно работать, поскольку у меня есть он, но это не делает. По словам скрипача заголовок показывает:-

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

и JSON точно корректен выше. Я использую хром, если это делает несколько отличающимся. Протестирует в IE и FF....

РЕДАКТИРОВАНИЕ 3

использование $ .get производит

"[\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]"
154
задан Cœur 26 March 2017 в 04:19
поделиться

3 ответа

var data = [ 
 {"Id": 10004, "PageName": "club"}, 
 {"Id": 10040, "PageName": "qaz"}, 
 {"Id": 10059, "PageName": "jjjjjjj"}
];

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

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

эти два варианта работают хорошо, если только у вас нет чего-то вроде:

var data.result = [ 
 {"Id": 10004, "PageName": "club"}, 
 {"Id": 10040, "PageName": "qaz"}, 
 {"Id": 10059, "PageName": "jjjjjjj"}
];

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

РЕДАКТИРОВАТЬ:

попробуйте с этим и описывает, какой результат

$.get('/Cms/GetPages/123', function(data) {
  alert(data);
});

ДЛЯ РЕДАКТИРОВАТЬ 3:

это исправляет проблему, но не идею использовать "eval", вы должны увидеть, как ответ в '/ Cms / GetPages / 123'.

$.get('/Cms/GetPages/123', function(data) {
  $.each(eval(data.replace(/[\r\n]/, "")), function(i, item) {
   alert(item.PageName);
  });
});
289
ответ дан 23 November 2019 в 22:00
поделиться

getJSON будет оценивать данные в JSON за вас, если правильный тип содержимого используется. Убедитесь, что сервер возвращает данные как application / json.

4
ответ дан 23 November 2019 в 22:00
поделиться

Вы преобразовали данные из строки в объект JavaScript?

Вы можете сделать это с помощью data = eval ('(' + string_data + ')'); или, что безопаснее, data = JSON.parse (string_data); , но позже будет работать только в FF 3.5 или если вы включите json2.js

jQuery с версии 1.4.1 также есть для этого функция $. parseJSON () .

Но на самом деле $. GetJSON () должен выдать вам уже проанализированный объект json, поэтому вам нужно просто все тщательно проверить, где-то есть небольшая ошибка, например, вы могли забыть процитировать что-то в json , или одна из скобок отсутствует.

16
ответ дан 23 November 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: