我正在尝试使用jQuery从服务器返回的JSON字符串中提醒id和子类别。
我得到以下JSON字符串。
[{"name":"Technology","id":117,"subcategory":"Machines"},
{"name":"Technology","id":118,"subcategory":"Tools"},
{"name":"Technology","id":119,"subcategory":"Air"}]
我尝试做:
$.getJSON("scene/getSubCategories/Technology",
{
format: "json"
},
function(data) {
alert(data);
$.each(data.object, function(i,object){
alert(object.id + " " +object.subcategory);
});
});
我收到了错误
消息:'length'为null或不是对象
行:12
Char:7740
代码:0
URI:http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
我做错了什么?
我正在使用jQuery 1.3.2,因为我有一个第三方JavaScript插件,可以使用这个jQuery版本,我无法想象jQuery的两个版本(1.3.2和1.4.3)是如何生活的在同一边。
答案 0 :(得分:3)
试试这个:
$.each(data, function(i,item){
alert(item.id + " " +item.subcategory);
});
each()
的第一个参数必须是迭代的对象。它必须是数据(数据没有属性“对象”)。提供的函数的第二个参数将是迭代对象的当前项。
答案 1 :(得分:1)
“'length'为null或不是对象”因为data.object
不存在。您可能打算输入:
$.each(data, function(i,object) {
而不是
$.each(data.object, function(i,object) {
作为旁注,在您的情况下,您可以使用本机JavaScript for循环而不是$ .each:
for(var i = 0; i < data.length; i++) {
var object = data[i];
...
}
答案 2 :(得分:1)
getJSON()的第二个参数应该是获取解析数据的函数。 each()获取一个数组,并在您的情况下传递元素的索引和值
$.getJSON("scene/getSubCategories/Technology", function(data) {
alert(data);
$.each(data, function(i, object){
alert(object.id + " " +object.subcategory);
});
});