循环遍历数组,每次都进行ajax调用,而不是工作

时间:2011-09-01 18:20:50

标签: javascript jquery ajax arrays loops

我遇到了这个问题,基本上,我有一个大数组,每次循环执行循环时我都会分解为更小的数组。在循环中,我有一个ajax调用,它将该数组发送到url。问题是它只进行一次ajax调用,但它会在控制台中记录其他较小的数组。知道为什么会这样吗?

  //emailArray = [email1@something.com, email2@something.com..... (up to a number greater than 10)
  while(emailArray.length) {
            console.log(emailArray.splice(0,10));



            $.ajax({
                url:"some/url",
                type: "POST",
                data: {
                    "object": emailArray.splice(0,10)
                },
                dataType: "json",
                success: function (data, status, xhr) {
                    //callback(data);
                    console.log('data from success');
                    console.log(data);
                }
            });
            console.log('after ajax');
        }

编辑,循环旨在为大数组中的每10个项发送一个新的ajax请求,并且发送的数组中有10个项。当我在控制台中记录它们时,.splice将数组分解得很好......但它没有做ajax部分

1 个答案:

答案 0 :(得分:3)

.splice()对源数组具有破坏性,因此您的console.log(emailArray.splice(0,10));会弄乱emailArray并导致您错过迭代。

您可以在.slice()语句中使用.splice()(这不是破坏性的,但会返回副本)而不是console.log(),如下所示:

  //emailArray = [email1@something.com, email2@something.com..... (up to a number greater than 10)
  while(emailArray.length) {
            console.log(emailArray.slice(0,10));

            $.ajax({
                url:"some/url",
                type: "POST",
                data: {
                    "object": emailArray.splice(0,10)
                },
                dataType: "json",
                success: function (data, status, xhr) {
                    //callback(data);
                    console.log('data from success');
                    console.log(data);
                }
            });
            console.log('after ajax');
        }