我在一个名为data的变量中返回了以下JSON。
JSON这是返回的...
[
{"Id": 10004, "PageName": "club"},
{"Id": 10040, "PageName": "qaz"},
{"Id": 10059, "PageName": "jjjjjjj"}
]
我试图使用$.each遍历集合,但遇到了警报显示为undefined的问题。我尝试了很多不同的语法,但似乎无法理解。
我使用的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);
});
}
EDIT 2这有点让我困惑,根据文档,它应该可以正常工作,但它没有。
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]"
发布于 2010-02-26 22:55:25
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);
});
EDIT 3的:
这纠正了问题,但不是使用"eval“的想法,您应该看到'/Cms/GetPages/123‘中的响应是如何的。
$.get('/Cms/GetPages/123', function(data) {
$.each(eval(data.replace(/[\r\n]/, "")), function(i, item) {
alert(item.PageName);
});
});
发布于 2010-02-26 22:57:26
你有没有把数据从字符串转换成JavaScript对象?
你可以用data = eval('(' + string_data + ')');
或者更安全的data = JSON.parse(string_data);
来做这件事,但是以后只能在FF 3.5中工作,或者如果你包含json2.js
从1.4.1开始的jQuery也有这个功能,$.parseJSON()
。
但实际上,$.getJSON()
应该给你已经解析过的json对象,所以你应该彻底检查所有东西,没有什么错误,比如你可能忘了在json中引用一些东西,或者丢失了一个括号。
发布于 2018-10-13 22:44:16
$.each(JSON.parse(result), function(i, item) {
alert(item.number);
});
https://stackoverflow.com/questions/2342371
复制相似问题