我在一个名为 data 的变量中返回了以下 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 这让我有点困惑,根据文档,它应该像我拥有的那样工作,但事实并非如此。根据 fiddler ,标题显示:-
Content-Type: application/json; charset=utf-8
上面的 JSON 是完全正确的。如果这有什么不同,我正在使用 chrome。将在 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]"
最佳答案
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);
});
});
关于使用 $.each 对 Json 数据进行 jquery 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342371/