每个循环中都有jQuery ajax

时间:2016-04-01 19:08:23

标签: jquery ajax loops each

我在$ .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)。其余的工作没有任何问题,我只是在努力。有没有人能够帮助我?谢谢!

1 个答案:

答案 0 :(得分:0)

默认情况下,AJAX请求是异步的。这意味着它将请求发送到服务器,但在继续代码之前不会等待响应返回。因此$.each()循环立即发送所有三个AJAX请求,并执行所有beforeSend:函数。在处理响应之前,不会执行success:函数,直到您的代码返回主浏览器事件循环时才会执行。

由于在处理任何响应之前执行了所有beforeSend:函数,因此test数组将在执行success函数时填充所有图像。所以他们都会看到test.length == 3