2012-04-04 144 views
1

我不能understend內工作,爲什麼變量「s_return」不工作變量分配不函數(阿賈克斯,JS)

$('.codeinput').change(function() { 
var s_return="";   
var to_check=this.value ; 

     $.ajax({ 
    type: "POST", 
    url: "check.php", 
    data: "code="+to_check}).done(function(msg) { 
    s_return=msg; // msg - variable work fine 

}); 

// here variable "s_return" is unset 
this.value=s_return; 
}); 

我會明白任何幫助。

回答

2
s_return=msg; 

位於異步函數內部。它將在服務器響應時設置。

this.value=s_return; 

在請求被觸發後立即運行。因此s_return尚未設置。

你需要做的是這樣的:

$('.codeinput').change(function() { 
    var that = this; 
    var s_return="";   
    var to_check=this.value ; 

    $.ajax({ 

     type: "POST", 
     url: "check.php", 
     data: "code="+to_check 

    }).done(function(msg) { 
     that.value=msg; 
    }); 

}); 
1

AJAX調用異步運行。如果單步執行它,您會看到this.value=s_return;s_return=msg;之前執行,因此在執行this.value=s_return;分配時,s_return仍爲空。