通过 jQuery 在 Instagram JSON 中获取未定义的变量

Getting undefined variable in Instagram JSON feed via jQuery

我正在尝试使用 JSON 和 jQuery 从 Instagram 获取一个提要,以从一个特定用户那里提取特定的主题标签图像 - 到目前为止它已经很疯狂了,而且都是从头开始构建的..现在我卡住了 - 我的循环一直在说 Undefined x

这是我的代码

// GET INSTAGRAM FEED 
// Get feed from Instagram based on Hashtag and filter by user
//

var username = 'jdsportsofficial';
var hashtag = 'crlifestyle';
var clientId = '5a79ddf3fa4147ffbea3fc0e38b22014';
var auth_token = ''; // not needed for most
var instaHTML;
var divId = '#instafeed';

jQuery.ajax({
    type: "GET",
    dataType: "jsonp",
    cache: false,
    url: "https://api.instagram.com/v1/tags/"+hashtag+"/media/recent?client_id="+clientId,
    success: function(x) {

    for (var i = 0; i < 25; i++) {
        // GET THE PICTURE
        // -- options are thumbnail and large - see object for more
        var instaPicture = x.data[i].images.thumbnail.url;
        if (x.data[i].user.username == username) {

            instaHTML += "<div class='CaroselSlideItem'><img src='" + instaPicture + "'/></div>";

        }
        // INSERT THE GALLERY
        jQuery(divId).html(instaHTML);



    }
}
}); 

你可以通过jQuery('body').html(instaHTML);

来控制它

我的错误是

TypeError: x.data[i] 未定义 var instaPicture = x.data[i].images.thumbnail.url;

中的第 707 行

如果 x.data 的结果少于 25 个,则可能会出现错误。假设 x.data 只有 20 个结果,那么当循环到达 i=20 时,x.data[i] 将是未定义的。

所以

jQuery.ajax({
    type: "GET",
    dataType: "jsonp",
    cache: false,
    url: "https://api.instagram.com/v1/tags/" + hashtag + "/media/recent?client_id=" + clientId,
    success: function (x) {
        for (var i = 0; i < x.data.length && i < 25; i++) {
            // GET THE PICTURE
            // -- options are thumbnail and large - see object for more
            var instaPicture = x.data[i].images.thumbnail.url;
            if (x.data[i].user.username == username) {
                instaHTML += "<div class='CaroselSlideItem'><img src='" + instaPicture + "'/></div>";
            }
            // INSERT THE GALLERY
            jQuery(divId).html(instaHTML);
        }
    }
});