我是JS / JQuery的菜鸟。这是代码:
ids = ["1", "2", "3"]
var imageData = [];
for (i=0; i<ids.length; i++) {
$.ajax({
url: 'http://my.images.edu/' + ids[i] + '/info.json',
type: 'GET',
dataType: 'jsonp',
success: function(data) {
imageData.push(data);
}
});
};
// now I want to do stuff with in a loop with the populated
// array, but it's always empty!
console.log(imageData.length);
JSONP正在运行(我可以在success
函数中将JSON对象响应记录到控制台)。我的猜测是based on this question,当我想使用它时,数组还没有填充,但我可能错了。如果是这样的话,我该如何绕过它,否则,我错过了什么?提前谢谢!
答案 0 :(得分:0)
在当前函数上下文完成执行之前,不会编辑imageData。
代码将运行完成,然后成功回调将逐个运行。你必须有你的逻辑来处理回调中的数据。
因为在执行操作之前,您实际上希望完成所有回调,所以您可能希望查看jQuery deffereds
在循环中工作的these lines。
$('#button').click(function() {
$.when(
$.ajax({
url: '/echo/html/',
success: function(data) {
alert('request complete')
}
}),
$.ajax({
url: '/echo/html/',
success: function(data) {
alert('request complete')
}
})
).then( function(){
alert('all complete');
});
});