2011-11-01 58 views
0

如果我有以下幾點:如何保持一個變量回調

jqxhr = $.ajax(settings) 
    .done(function(result) { 

但我有一個變量稱爲身份識別碼,我需要Ajax調用完成後參考。由於ajax是異步的,恐怕在被調用的時候,myID會變髒。

問:如何保存myID的副本,以便它是done方法中的正確值?我使用.context()?

+0

你不能要麼只是把它這樣你就可以從「結果」中獲取它,或者使其成爲對象內的另一個名稱/對象(myID.id)? –

回答

3

使用閉包:

var myID = 1; 
(function(myID){ // you can choose a different variable name here to avoid confusion 
    jqxhr = $.ajax(settings) 
     .done(function(result) { 
      alert(myID); // will still be 1 
     }); 
})(myID) 

myID = 2; 

下面是一個例子:

http://jsfiddle.net/pcfeN/

+0

不錯,你創建了一個閉包.... :)很好 –

0

你可以保存到$ .data中,如果有人試圖重新插入 - 你拒絕它。

這樣,你可以保存原始值