如何使用JQuery从JSON对象数组获取值

时间:2018-12-02 18:00:22

标签: jquery arrays json

我已经可以使用JQUERY .each()从JSON对象获取数据,但似乎无法弄清楚如何将要插入链接的URL数组作为目标。

这是getJson函数

function getDetails(itemName) {
    $.getJSON("getDetails.json", function (data) {

        $("#description").empty();

        $.each(data, function () {
            if (this["id"] === itemName) {
                $("#description").append("<p>Description: " + this["description"] + "</p>");
                $("#description").append("<p>Price: " + this["price"] + "</p>");
                $("#description").append("<ul></ul>");
                $.each(data.urls, function () {
                    $("#description ul").append("<li><a href=\"" + /*some_code*/ + "\">" + /*some_code*/ + "</a></li>");
                }); 
            } 
        })
    }); 
}; 

还有我正在使用的JSON对象。

{
    "id": "itemGuitar",
    "description": "Pete Townshend once played this guitar while his own axe was in the shop having bits of drumkit removed from it.",
    "price": "5695.99",
    "urls": ["http://www.thewho.com", "http://en.wikipedia.org/wiki/Pete_Townshend"]
}

2 个答案:

答案 0 :(得分:0)

如果您阅读.each()中的documentation,则会发现index已传递到函数中。

$.each(data.urls, function (index) {
      /* Use index here to get url */
      console.log(data.urls[index]);
});

答案 1 :(得分:0)

您可以通过使用jQuery传递给回调函数的参数来做到这一点:

$.each(data.urls, function (i, url) {
     $("#description ul").append("<li><a href=\"" + url + "\">" + url + "</a></li>");
}); 

您甚至可以像这样由内向外翻转(但请注意,$.map的参数顺序不同):

$("#description ul").append($.map(data.urls, function (url, i) {
    return "<li><a href=\"" + url + "\">" + url + "</a></li>";
})); 

我还建议使用jQuery样式创建元素:

$("#description ul").append($.map(data.urls, function (url, i) {
    return $("<li>").append($("<a>").attr("href", url).text(url));
}));