使用 $.each 对 Json 数据进行 jquery 循环

标签 jquery json foreach

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

这是返回的 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 这让我有点困惑,根据文档,它应该像我拥有的​​那样工作,但事实并非如此。根据 fiddler ,标题显示:-

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

关于使用 $.each 对 Json 数据进行 jquery 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342371/

相关文章:

android - 根据 Json 的响应更改 onClick 适配器中的图像

flutter - 如何在 Dart 中的 List.forEach() 中异步/等待

.net - Parallel.ForEach - 优雅的取消

javascript - 获取仅包含呈现元素的 iframe 的高度

jquery - jquery.cookies 是否托管在 Google CDN 上?

jquery 禁用控件并在单击时发出警报

java - Android:从 JSON 动态获取 JSON 数组键名

表中偶数/奇数行的 jQuery 选择器

json - 如何在 Lucerne 中捕获解析错误(常见的 lisp)

vb.net - For Each 循环通过 DataGridViewColumn 标题