2017-10-30 14 views
0

次のコードでは、Ajaxを呼び出してデータを取得しています。成功関数では、配列を作成しています(これらはグローバルに宣言されています)。配列に格納中にAjax呼び出しの結果データを失う

for (var i=0; i< arrayOf_ID.length;i++) { 
    $.ajax({ 
     type: "GET", 
     url: 'URL' +arrayOf_ID[i], 
     dataType: 'json', 
     contentType: false, 
     async: false, 
     cache: false, 
     processData: false, 
     success: function (result) { 
      for(var i=0; i<result.length; i++) 
      { 
       if(result[i].Comments!="") 
       { 
        section[i]=result[i].section; 
        Comment[i]= result[i].Comments; 
        checklist[i]= result[i].checklist; 
       } 
      }  
     }, 
     error: function (error) { 
      alert(""); 
     } 
    });  
} 

エラーは一切発生していません。しかし、私の問題は、配列を作成しながらデータを失うことです。私は完全にAJAX呼び出しの結果を得ていますが、配列では最後のIDだけの値を取得しています。

例:arrayOf_IDには4つの値があります(4は単なる例であり、50以上の値を持つことができます)、上記のように各IDでURLを作成していますので、(Section、Comment、checklistの)配列すべての4つのIDは一緒ですが、最終ID(arrayOf_ID)のみの配列(セクション、コメント、チェックリスト)の結果が得られています。 誰でも助けてくれますか?

答えて

0

あなたはこのループ内の値を上書きしている:セクション、コメント、チェックリストすなわち3つのすべての変数で

 for (var i = 0; i < result.length; i++) { 
      if (result[i].Comments != "") { 
       section[i] = result[i].section; 
       Comment[i] = result[i].Comments; 
       checklist[i] = result[i].checklist; 
      } 
     } 

電流値は次の反復によって上書きされているので、ループの最後にあなたが最後に取得反復値。より良い方法は、Objectを使用して、一意の識別子またはキーワードで区別されたキーの中に値を格納することです。構造が使用できます

var Obj = { 
     1: { 
      section: [...], 
      checklist: [...], 
      Comments: [...] 
     },2: { 
      section: [...], 
      checklist: [...], 
      Comments: [...] 
     },3: { 
      section: [...], 
      checklist: [...], 
      Comments: [...] 
     },4: { 
      section: [...], 
      checklist: [...], 
      Comments: [...] 
     } 
     .... 
    } 
代わりにセクションを使用しての
+0

4がためだけで使用する必要がありますたとえば、arrayOf_ID.lengthは30以上、または50+以上になることがあります。 –

+0

@PruthvirajMohite次に、配列のプッシュメソッドを使用して、配列に上書きするのではなくデータを追加することができます –

1
for (var i = 0; i < result.length; i++) { 
      if (result[i].Comments != "") { 
       section[i] = result[i].section; 
       Comment[i] = result[i].Comments; 
       checklist[i] = result[i].checklist; 
      } 
     } 

は、[i]は=結果[i]の代わりに上書きされ、この方法で値の.SECTIONはあなたが

for (var i = 0; i < result.length; i++) { 
     if (result[i].Comments != "") { 
      section.push(result[i].section) 
      Comment.push(result[i].Comments) 
      checklist.push(result[i].checklist) 
    } 
    } 
+0

伝説(y)それは私の仕事をうまくしました。 –

関連する問題