2013-07-24 102 views
0

我有一個全局javascript數組,我可以在函數的開頭調用它的值,但在此之後,當我警告領導[i]時,它顯示爲undefined: 看起來問題當兩個Ajax調用互相嵌套時發生,JS似乎無法找到數組中的值。Javascript變量顯示undefined

JS

function getLeaders(bool) { 
    var leaders = new Array(); 
    leaders.push('444'); 
    leaders.push('111'); 
    $.ajax({ 
     url: 'url', 
     crossDomain: true, 
     type: 'post', 
     data: { 
      'clubID': curClub 
     }, 
     success: function (data) { 
       for (var i = 0; i < leaders.length; i++) 
       { 
        alert(leaders[i]); <===== working fine here 
        $.ajax({ 
         url: 'someurl', 
         crossDomain: true, 
         type: 'post', 
         data: { 
          'id': leaders[i] <====== works here 
         }, 
         success: function(data3) { 
          alert(leaders[i]);  <======= undefined here 
          var json3 = jQuery.parseJSON(data3); 
         } 
       }); 
      } 
      } 
     }); 
    }; 
+0

當然,如果有道理。你的變量'i'在你的第二個Ajax完成時改變爲leaders.length值。試着控制檯登錄你的i值 –

+0

可能這種嵌套使用的變量是由代碼結構錯誤 –

+1

嗯..領導者似乎是長度爲2但循環直到<2 – TGH

回答

2

由於呼叫是異步i的值大於可能leader.length更多的時候調用返回。所以你可能正在訪問一個超出界限的索引。

+0

我不認爲我能做到這一點,因爲我需要在我的第二個阿賈克斯領導[我]呼籲 – nshah

+0

這是可能的,只是不好,因爲我用作一個有希望的免責聲明。 – CBIII

+0

我在第二次成功的情況下打印出來的,它是2,你是對的 – nshah