代码之家  ›  专栏  ›  技术社区  ›  danny.lesnik

用jQuery分析JSON[2]

  •  1
  • danny.lesnik  · 技术社区  · 15 年前

    我正在尝试使用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”为空或不是对象

    线路:12

    字符: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 回复  |  直到 14 年前
        1
  •  3
  •   Peter Mortensen Pieter Jan Bonestroo    14 年前

    试试这个:

    $.each(data, function(i,item){
        alert(item.id + " " +item.subcategory);
    });
    

    第一个论点 each() 必须是要迭代的对象。它必须是数据(数据没有属性“object”)。提供的函数的第二个参数将是迭代对象的当前项。

        2
  •  1
  •   PleaseStand    15 年前

    “'length'为空或不是对象”,因为 data.object 不存在。你可能想打:

    $.each(data, function(i,object) {
    

    而不是

    $.each(data.object, function(i,object) {
    

    另外,在您的示例中,可以使用本地JavaScript for循环而不是$。每个:

    for(var i = 0; i < data.length; i++) {
        var object = data[i];
        ...
    }
    
        3
  •  1
  •   cababunga    15 年前

    getJSON()的第二个参数应该是获取解析数据的函数。 each()获取一个数组,并在本例中传递元素的索引和值

    $.getJSON("scene/getSubCategories/Technology", function(data) {
         alert(data);
         $.each(data, function(i, object){
              alert(object.id + " " +object.subcategory);
         });
    });