【问题标题】:How do I loop through a deeper json array with AJAX?如何使用 AJAX 遍历更深的 json 数组?
【发布时间】:2014-03-11 17:18:38
【问题描述】:

我已经查看了有关使用 .each 元素循环数组的其他问题,但我仍然无法让我的函数工作 - 我在未定义的元素上遇到引用错误,我想我只是不会“深入”在我的嵌套 .each 语句中已经足够了。

我的函数成功返回一个变量“response”,它应该包含许多对象/数组。

$.each(response, function(){
     console.log(response.first_name);
}

这显然是不正确的,因为可以说它不够“深入”,但我对如何在其中添加多个 $.each 循环感到困惑。其他问题在“响应”所在的位置列出了名称,或者它们具有 function(x, test) 以在循环时显示索引。我迷路了。

根据 Google Chrome 中的控制台,我的 json 的结构是这样的:

Object {data: Array[2]}
    data: Array[2]
        0: Object
            User: Object
                  first_name: "Steve"
                  last_name: "Ramsey"
        1: Object
            User: Object
                  first_name: "Bob"
                  last_name: "Ramsey"

如您所见,其中一个字段的名称会递增,因此我知道在循环数字时需要一个变量作为索引。我的想法是,然后我将使用这些数据在页面上吐出“Bob Ramsey”、“Steve Ramsey”等以及对象中可能存在的任何其他信息。

【问题讨论】:

    标签: jquery ajax json loops


    【解决方案1】:

    first_name 看起来是对象调用 User 的一部分,因此您需要先引用 User。

    var response = {
        data: [{
            User: {
                first_name: "Steve",
                last_name: "Ramsey"
            }
        },{
            User: {
                first_name: "Bob",
                last_name: "Ramsey"
            }
        }]
    };
    
    $.each(response.data, function (index, value) {
        console.log(value.User.first_name);
    });
    

    JSFiddle:http://jsfiddle.net/8LfXF/1/

    【讨论】:

    • 尝试这个会给我'无法读取未定义的属性'first_name'。'
    • 由于某种原因,它仍然给我同样的错误。在我的 IDE 中,'index' 带有下划线,表示它未使用,所以我假设在这种情况下,'index' 自动增量是 .each 函数的一部分?
    • 代码对我来说运行良好。该对象与我上面添加的对象不同吗?
    • 我尝试在那里硬编码一个数字“0.User.first_name”并且错误消失了,但没有返回任何内容,就好像该字段为空一样。
    • 可能这个对象制作的很奇怪。在你的数组中,每个对象都没有“0”、“1”、“2”等(从“用户”开始)。
    猜你喜欢
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2011-02-05
    相关资源
    最近更新 更多