使用jQuery解析JSON [2]

时间:2010-11-11 00:02:22

标签: jquery ajax json

我正在尝试使用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)是如何生活的在同一边。

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