为了账号安全,请及时绑定邮箱和手机立即绑定

使用$.each对JSON数据执行jQuery循环

使用$.each对JSON数据执行jQuery循环

翻翻过去那场雪 2019-08-03 03:03:13
使用$.each对JSON数据执行jQuery循环下面的JSON返回到一个名为data的变量中。这是返回的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]"
查看完整描述

3 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

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:

这纠正了问题,但不是使用“val”的想法,您应该看到‘/CMS/GetPages/123’中的响应如何。

$.get('/Cms/GetPages/123', function(data) {
  $.each(eval(data.replace(/[\r\n]/, "")), function(i, item) {
   alert(item.PageName);
  });});




查看完整回答
反对 回复 2019-08-05
?
jeck猫

TA贡献1909条经验 获得超7个赞

您是否将数据从String转换为JavaScript对象?

你可以用data = eval('(' + string_data + ')');或者,哪个更安全,data = JSON.parse(string_data);但以后只会在FF 3.5中工作,或者如果您包括json2.js

jQuery自1.4.1以来也有此功能,$.parseJSON().

但实际上$.getJSON()应该为您提供已经解析过的json对象,因此您应该彻底检查所有内容,在某个地方几乎没有什么错误,就像您可能忘记引用json中的某些内容一样,或者其中的一个括号丢失了。




查看完整回答
反对 回复 2019-08-05
?
DIEA

TA贡献1820条经验 获得超2个赞

$.each(JSON.parse(result), function(i, item) {     alert(item.number);});

查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号