我在名为data的变量中返回了以下JSON。
这是GETS返回的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完全正确。如果这有任何不同,我正在使用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); }); });