使用Ajax从两个节点显示Json

时间:2013-03-26 12:55:11

标签: ajax json

我很难从json显示数据。标题显示正常,但 item.volumeInfo.industryIdentifiers.type 返回undefined。

$.ajax({
url: 'https://www.googleapis.com/books/v1/volumes?q=:isbn=0-13-727827-6',
dataType: 'json',
success: function (data) {
    $.each(data.items, function (index, item) {
        $(".tab1").append("<div>" + item.volumeInfo.title + "</div><div>" + item.volumeInfo.industryIdentifiers.type + "</div>");
    });
}
});

小提琴在这里:http://jsfiddle.net/HFs8U/1/

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您需要在.type之前放置[0],因为volumeInfo可以有两个industryIdentifier。当然,这只会显示第一个,因此您可能需要找到一种更合适的方式来显示两者是否存在。

$.ajax({
    url: 'https://www.googleapis.com/books/v1/volumes?q=:isbn=0-13-727827-6',
    dataType: 'json',
    success: function (data) {
        $.each(data.items, function (index, item) {
            $(".tab1").append("<div>" + item.volumeInfo.title + "</div><div>" + item.volumeInfo.industryIdentifiers[0].type + "</div>");
        });
    }
});

答案 1 :(得分:0)

解决方案并不是很困难。 david99world建议再做一个$。每个项目的循环并指向一个小提琴。我略微修改了它并提出了:

$.ajax({
url: 'https://www.googleapis.com/books/v1/volumes?q=:isbn=0-13-727827-6',
dataType: 'json',
success: function (data) {
    $.each(data.items, function (i, item) {
        $(".tab1").append("<div>" + item.volumeInfo.title + "</div>");
        $.each(item.volumeInfo.industryIdentifiers, function (i2, type) {
            $(".tab1").append("<div>" + type.type + "</div>");
        });
    });
}
});

http://jsfiddle.net/8SnaL/

希望它可能对其他人有用。