2011-09-01 3 views
0

J'ai ce problème, où fondamentalement, j'ai un grand tableau, que je casse en plus petits tableaux chaque fois que la boucle fait une boucle. Dans la boucle, j'ai un appel ajax qui envoie ce tableau à une URL. Le problème est qu'il ne fait qu'une seule fois l'appel ajax, mais il enregistre les autres tableaux plus petits dans la console. Une idée de pourquoi cela se passe?boucler dans un tableau, et faire un appel ajax à chaque fois, ne fonctionne pas

//emailArray = [[email protected], [email protected] (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'); 
     } 

Edition, la boucle est conçu pour envoyer une nouvelle demande ajax pour 10 articles dans le grand tableau, et le tableau qui est envoyé a 10 articles en elle. Le .splice décompose bien les tableaux quand je les enregistre dans la console ... mais il ne fait pas la partie ajax

Répondre

3

.splice() est destructif sur le tableau source donc votre console.log(emailArray.splice(0,10)); perturbe emailArray et vous faisant manquer des itérations .

Vous pouvez utiliser .slice() (qui est non destructive, mais retourne une copie) au lieu de .splice() dans la déclaration console.log() comme ceci:

//emailArray = [[email protected], [email protected] (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'); 
     } 
+0

Cela a fonctionné! Merci ... haha ​​le fait que j'essayais de le déboguer le brisait tout le temps :) – Bill

+0

C'est une des raisons pour lesquelles 'splice()' est une fonction de tableau un peu compliquée et c'est pourquoi je ne l'ai pas utilisé dans mon autre vous répondre ici: http://stackoverflow.com/questions/7273668/split-a-long-array-into-smaller-arrays-with-jquery/7273765#7273765. Vous devez être conscient qu'il modifie le tableau source lors de son utilisation. – jfriend00

Questions connexes