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

使用$.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]"


江户川乱折腾
浏览 877回答 3
3回答

jeck猫

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);   });});

吃鸡游戏

您是否将数据从String转换为JavaScript对象?你可以用data = eval('(' + string_data + ')');或者,哪个更安全,data = JSON.parse(string_data);但以后只会在FF 3.5中工作,或者如果您包括json2.jsjQuery自1.4.1以来也有此功能,$.parseJSON().但实际上$.getJSON()应该为您提供已经解析过的json对象,因此您应该彻底检查所有内容,在某个地方几乎没有什么错误,就像您可能忘记引用json中的某些内容一样,或者其中的一个括号丢失了。

SMILET

$.each(JSON.parse(result), function(i, item) {     alert(item.number);});
打开App,查看更多内容
随时随地看视频慕课网APP