jQuery ajax 在每个循环中
jQuery ajax in each loop
我在 $.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),但另一个 returns 三次 3(控制台日志:3、3、3)。其余的都没有问题,我只是在挣扎。有没有人能帮助我?谢谢!
AJAX 请求默认是异步的。这意味着它将请求发送到服务器,但在继续执行代码之前不会等待对 return 的响应。所以 $.each()
循环发送所有三个 AJAX 请求,并立即执行它们所有的 beforeSend:
函数。 success:
函数在响应被处理之前不会执行,直到您的代码 return 进入主浏览器事件循环后才会执行。
由于所有 beforeSend:
函数都在处理任何响应之前执行,因此 test
数组将在执行 success
函数时填充所有图像。所以他们都会看到 test.length == 3
.
我在 $.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),但另一个 returns 三次 3(控制台日志:3、3、3)。其余的都没有问题,我只是在挣扎。有没有人能帮助我?谢谢!
AJAX 请求默认是异步的。这意味着它将请求发送到服务器,但在继续执行代码之前不会等待对 return 的响应。所以 $.each()
循环发送所有三个 AJAX 请求,并立即执行它们所有的 beforeSend:
函数。 success:
函数在响应被处理之前不会执行,直到您的代码 return 进入主浏览器事件循环后才会执行。
由于所有 beforeSend:
函数都在处理任何响应之前执行,因此 test
数组将在执行 success
函数时填充所有图像。所以他们都会看到 test.length == 3
.