示例代码
//JavaScript对象(Json对象)
var jsonobj = [
{"id":"1","name":"wang"},
{"id":"2","name":"zhang"},
{"id":"3","name":"guo"},
{"id":"4","name":"zhou"},
{"id":"5","name":"chen"}
];
$.each(jsonobj, function(i, obj) {
alert(obj.name);
});
完全正常,依次输出wang、zhang…
//Json字符串,外层有单(双)引号
var jsonstr = '[
{"id":"1","name":"wang"},
{"id":"2","name":"zhang"},
{"id":"3","name":"guo"},
{"id":"4","name":"zhou"},
{"id":"5","name":"chen"}
]';
$.each(jsonstr, function(i, obj) {
alert(obj.name);
});
这段代码,在浏览器中加载会报错误
Uncaught TypeError: Cannot use 'in' operator to search for '170' in...
需要注意的就是使用$.each()遍历json数组时,传入的必须是一个JavaScript对象(Json对象)
如果直接放入一个Json字符串浏览器会报错误
从服务器传过来的数据往往是Json字符串格式
解决办法:
使用JSON.parse()将Json字符串转换成JavaScript对象
$.each(JSON.parse(jsonstr), function(i, obj) {
alert(obj.name);
});
$().each()与$.each()道理是一样的
前者就是json数据放在$后的括号里面