我试图将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);
答案 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
}
});