首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用$.each在Json数据上执行jquery循环

使用$.each在Json数据上执行jquery循环
EN

Stack Overflow用户
提问于 2010-02-26 22:47:21
回答 4查看 707.9K关注 0票数 163

我在一个名为data的变量中返回了以下JSON。

JSON这是返回的...

代码语言:javascript
运行
复制
[ 
{"Id": 10004, "PageName": "club"}, 
{"Id": 10040, "PageName": "qaz"}, 
{"Id": 10059, "PageName": "jjjjjjj"}
]

我试图使用$.each遍历集合,但遇到了警报显示为undefined的问题。我尝试了很多不同的语法,但似乎无法理解。

我使用的JQuery是

代码语言:javascript
运行
复制
$.each(data, function(i, item) {
    alert(item.PageName);
});

谁能给我指出正确的方向?

编辑这是我用来抓取数据的代码

代码语言:javascript
运行
复制
$.getJSON('/Cms/GetPages/123', null, function(data) {
  fillSelect(data);
});

这是在回调时调用的函数

代码语言:javascript
运行
复制
function fillSelect(data) {
  alert(data);
  $.each(data, function(i, item) {
    alert(item.PageName);
  });
}

EDIT 2这有点让我困惑,根据文档,它应该可以正常工作,但它没有。

代码语言:javascript
运行
复制
Content-Type: application/json; charset=utf-8

JSON在上面是完全正确的。如果这有什么不同的话,我使用的是chrome。将在IE和FF中测试...

编辑3个

使用$.get产生

代码语言:javascript
运行
复制
"[\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]"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-26 22:55:25

代码语言:javascript
运行
复制
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);
});

这两个选项可以很好地工作,除非您有以下内容:

代码语言:javascript
运行
复制
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);
});

编辑:

试着这样做,并描述结果

代码语言:javascript
运行
复制
$.get('/Cms/GetPages/123', function(data) {
  alert(data);
});

EDIT 3的

这纠正了问题,但不是使用"eval“的想法,您应该看到'/Cms/GetPages/123‘中的响应是如何的。

代码语言:javascript
运行
复制
$.get('/Cms/GetPages/123', function(data) {
  $.each(eval(data.replace(/[\r\n]/, "")), function(i, item) {
   alert(item.PageName);
  });
});
票数 318
EN

Stack Overflow用户

发布于 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中引用一些东西,或者丢失了一个括号。

票数 17
EN

Stack Overflow用户

发布于 2018-10-13 22:44:16

代码语言:javascript
运行
复制
$.each(JSON.parse(result), function(i, item) {
    alert(item.number);
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2342371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档