Rip*_*ppo 154 foreach jquery json
我在一个名为data的变量中返回了以下JSON.
这是回归的JSON ......
[
{"Id": 10004, "PageName": "club"},
{"Id": 10040, "PageName": "qaz"},
{"Id": 10059, "PageName": "jjjjjjj"}
]
Run Code Online (Sandbox Code Playgroud)
我试图使用$ .each遍历集合,但我遇到的问题是警报显示未定义.我尝试了很多不同的语法,但似乎无法解决这个问题.
我正在使用的JQuery是
$.each(data, function(i, item) {
alert(item.PageName);
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以指出我正确的方向吗?
编辑 这是我用来获取数据的代码
$.getJSON('/Cms/GetPages/123', null, function(data) {
fillSelect(data);
});
Run Code Online (Sandbox Code Playgroud)
这是在回叫时调用的函数
function fillSelect(data) {
alert(data);
$.each(data, function(i, item) {
alert(item.PageName);
});
}
Run Code Online (Sandbox Code Playgroud)
编辑2 这有点令我困惑,根据它应该工作的文档,但它没有.根据提琴手的标题显示: -
Content-Type: application/json; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
并且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]"
Run Code Online (Sandbox Code Playgroud)
and*_*lzo 290
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);
});
Run Code Online (Sandbox Code Playgroud)
这两个选项效果很好,除非你有类似的东西:
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);
});
Run Code Online (Sandbox Code Playgroud)
编辑:
试试这个并描述结果
$.get('/Cms/GetPages/123', function(data) {
alert(data);
});
Run Code Online (Sandbox Code Playgroud)
编辑3:
这解决了问题,但不是使用"eval"的想法,你应该看看'/ Cms/GetPages/123'中的响应如何.
$.get('/Cms/GetPages/123', function(data) {
$.each(eval(data.replace(/[\r\n]/, "")), function(i, item) {
alert(item.PageName);
});
});
Run Code Online (Sandbox Code Playgroud)
vav*_*ava 16
您是否已将数据从字符串转换为JavaScript对象?
您可以使用data = eval('(' + string_data + ')');
或更安全,data = JSON.parse(string_data);
但稍后只能在FF 3.5中使用,或者如果包含json2.js
自1.4.1以来jQuery也有这个功能,$.parseJSON()
.
但实际上,$.getJSON()
应该给你已经解析过的json对象,所以你应该只是彻底检查一切,在某处埋没一点点错误,比如你可能忘记在json中引用一些东西,或者其中一个括号丢失了.
小智 5
$.each(JSON.parse(result), function(i, item) {
alert(item.number);
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
628776 次 |
最近记录: |