【问题标题】:Looping through JSON data using jQuery使用 jQuery 循环遍历 JSON 数据
【发布时间】:2016-10-13 18:09:08
【问题描述】:

我正在尝试从 JSON 文件(Squarespace)中获取特定信息,目的是将其附加到 <div>。我需要遍历数据并从每个帖子中获取位置。这是我正在使用的代码:

$.getJSON("http://www.theluxedit.com/?format=json-pretty", function(data) {
    $.each(data, function(index, value) {
        $('.locationData').append(data.items.location.addressLine2);
    });
});

只有当我使用整数指定项目时它才会起作用,例如:

$('.locationData').append(data.items[1].location.addressLine2);

这似乎适用于我尝试过的其他示例,是不是我的 JSON 连接有误?

【问题讨论】:

    标签: javascript jquery json getjson squarespace


    【解决方案1】:

    问题是您需要遍历项目本身而不是返回的整个对象:

    var $locationData = $('.locationData');
    $.getJSON("http://www.theluxedit.com/?format=json-pretty", function(data) {
        $.each(data.items, function(index, item) {
            $locationData.append(getLocationEl(item.location.addressLine2));    
        });
    });
    
    function getLocationEl(address) {
        return $('<div>', { text: address });
    }
    

    通过这样做,每次迭代都会查看不同的项目。然后,您可以直接访问该项目的属性,而不是从返回的顶级数据中访问。

    另外,我假设这是在 theluxedit.com 上运行的。否则你会得到一个错误。有关更多信息,请参阅此内容:"No 'Access-Control-Allow-Origin' header is present on the requested resource"

    【讨论】:

    • 顺便说一句,在循环内对类进行完整的 DOM 搜索效率低下。将结果存储在循环前的变量中并使用引用。
    • 更新了答案。如果您希望文本位于单独的行上,则效果很好。您也可以使用跨度而不是 div。此外,您可以只累积所有值并将它们作为逗号分隔的列表附加到单个字符串中。
    猜你喜欢
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多