无法使用ajax将项追加到数组

时间:2014-04-29 21:11:52

标签: javascript jquery ajax arrays instagram

我试图将Instagram图片的链接值附加到数组中。链接值在控制台中显示正常但在ajax函数后我的数组长度为0。还有' 0'在所有链接之前显示在控制台中。

我知道这个问题是由异步运行的ajax引起的,所以js代码的其余部分实际上是在可以附加到$ images之前运行的,但我不知道如何规避这个。这是我的代码:

$liked = 'https://api.instagram.com/v1/users/self/media/liked?access_token=' + $access_token + '&COUNT=20';
$images = []

$.ajax({
    type:'get',
    dataType:'jsonp',
    cache: false,
    url: $liked,
    success: function(data) {
        for (var i = 0; i < data.data.length; i++) {
            console.log(data.data[i].images.standard_resolution.url);
            $images.push(data.data[i].images.standard_resolution.url);
        }

    }
});
console.log($images.length);

1 个答案:

答案 0 :(得分:2)

console.log将在ajax调用结束之前运行;在数据循环结束后立即在成功函数中编写代码或console.log。

像:

$liked = 'https://api.instagram.com/v1/users/self/media/liked?access_token=' + $access_token + '&COUNT=20';
$images = []

$.ajax({
    type:'get',
    dataType:'jsonp',
    cache: false,
    url: $liked,
    success: function(data) {
        for (var i = 0; i < data.data.length; i++) {
            console.log(data.data[i].images.standard_resolution.url);
            $images.push(data.data[i].images.standard_resolution.url);
        }
        console.log($images.length); // here the array is filled with response data
    }
});