2011-11-01 77 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中,如果有人试图重新插入 - 你拒绝它。

这样,你可以保存原始值