我在$ .each循环中获取成功函数(ajax)中的值时遇到问题。
我有这样的事情:
var test = [];
$.each(images, function(index){
var formData = new FormData();
formData.append('image', images[index]);
$.ajax({
url: 'http://localhost/admin/api/offers/upload_photo',
data: formData,
cache: false,
contentType: false,
processData: false,
type: 'POST',
beforeSend: function(){
console.log(test.length);
test.push(images[index]);
},
success: function(){
console.log(test.length);
}
});
});
并且beforeSend的输出工作正常(控制台日志:0,1,2),但另一个返回三次3(控制台日志:3,3,3)。其余的工作没有任何问题,我只是在努力。有没有人能够帮助我?谢谢!
答案 0 :(得分:0)
默认情况下,AJAX请求是异步的。这意味着它将请求发送到服务器,但在继续代码之前不会等待响应返回。因此$.each()
循环立即发送所有三个AJAX请求,并执行所有beforeSend:
函数。在处理响应之前,不会执行success:
函数,直到您的代码返回主浏览器事件循环时才会执行。
由于在处理任何响应之前执行了所有beforeSend:
函数,因此test
数组将在执行success
函数时填充所有图像。所以他们都会看到test.length == 3
。