2012-12-04 30 views
0

可能重複:
Javascript infamous Loop problem?

我有麻煩試圖訪問一個$.post函數內部的變量。

函數內部的變量a的值總是相同的:。但在它之外,它隨着我的需要而增加。

這是怎麼發生的?我如何做一個$.post函數的循環?

for(var a=0; a<7; a++){ 
    console.log(a); /* increasing value */ 

    $.post("http://"+ document.domain + "/posts/user/xxxxx", 
     function(departments){ 
     console.log(a); /*value of 7*/ 

    }); 
} 

謝謝。

+4

參考:[?臭名昭著的Javascript環路問題(http://stackoverflow.com/questions/1451009/javascript-infamous-loop-problem)(有應該是一個*關閉*選項,只是爲了這個不斷髮生的問題,沒有冒犯!) – Yoshi

+1

哦,是,只需連續發出7個Ajax請求。你的服務器會沒事的。 ':P' –

+0

@Sime,據我所知,從DB獲得7個不同數據的陣列是唯一的方法... – Alvaro

回答

3

要麼給每個迭代它是自己的範圍,要麼使用$.ajaxcontext選項。

for(var a=0; a<7; a++){ 
    (function(a){ 
     console.log(a); /* increasing value */ 

     $.post("http://"+ document.domain + "/posts/user/xxxxx", 
      function(departments){ 
      console.log(a); /*value of 7*/ 

     }); 
    })(a); 
} 

$.ajax ...

for(var a=0; a<7; a++){ 
    console.log(a); /* increasing value */ 

    $.ajax({ 
     url: "http://"+ document.domain + "/posts/user/xxxxx", 
     type: "POST", 
     context: a, 
     success: function(departments){ 
      console.log(this); /*value of 7*/  
     } 
    }); 
}