【问题标题】:json multidimensional array $.eachjson多维数组$.each
【发布时间】:2013-09-20 01:27:26
【问题描述】:

我可以获取“名称”值,但不能获取“订单”,似乎订单是作为对象而不是数组返回的?

json.json

[{ "ID":"23",
"LastName":"Moe",
"FirstName":"Ronnie",
"Orders":[{"OrderNumber":"11","ItemNumber":"22"},
             {"OrderNumber":"33","ItemNumber":"44"}]}]

我的HTML.html

$.getJSON('json.json',  
    {},
    function (data) {  
     $.each( data, function ( i, val ) {
        var lastname=this.LastName; 
        var firstname=this.FirstName;
        var orders=this.Orders;

        $.each(data.Orders, function(property, value) {
        alert(property + "=" + value);

        //Insert the data to HTML page
        $(".title").append('<li>'+lastname+', '+firstname+'  >'+'</li>');
        $(".title").append('<li>'+orders+'</li>');

        });

    });
    }) 
 });  

【问题讨论】:

  • 参见下面提到的这个小提琴jsfiddle.net/KyleMuir/jcr79/3 - 您正在对数据进行两次迭代。
  • 仍然返回 [object] 而不是值 - 我更新 jsfiddle.net 以显示带有警报的结果..?
  • 那是因为 alert 会将它串起来,console.log 会记录整个对象。如果您将其切换为 alert(value.OrderNumber) 或类似名称,您将看到值。
  • 非常感谢,这行得通!我对这个对象感到困惑 - 我如何为这个答案表示感谢?
  • 我会把它作为答案发布,你可以接受它:) 很高兴能提供帮助。

标签: jquery json multidimensional-array getjson


【解决方案1】:

应该是this.Ordersval.Orders,而不是data.Orders

【讨论】:

    【解决方案2】:

    请参阅下面提到的这个小提琴http://jsfiddle.net/KyleMuir/jcr79/3 - 您正在对数据进行两次迭代。您需要指向正确的数据源。

    至于警报,您需要警报对象的属性,而不是整个对象。例如。 alert(value.OrderNumber)

    Alert 将简单地打印出对象的字符串表示形式(“[object object]”)。

    Console.log 将记录整个对象。

    希望这会有所帮助:)

    【讨论】:

    • 最后一个问题:在 jsfiddle 上,console.log 没有显示任何输出?我是新手,我在哪里可以看到运行结果?
    • 如果你有 chrome 并按 f12 它将调出开发者工具。从那里您可以打开控制台。 Ctrl + shift + J 是直接打开控制台的快捷键(图标以这个符号>开头,后跟3条横线)。在提供的小提琴中,您应该看到 2 个可在控制台中扩展的对象。展开它们应该会向您显示对象具有的属性以及它们包含的值。
    • 另外,这是 Chrome developers.google.com/chrome-developer-tools/docs/console 中开发人员工具的权威指南。 IE 和 firefox 都有这些,我只是熟悉 Chrome,因为它是我选择的浏览器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多