2012-04-04 12 views
1

ich nicht, warum Variable "s_return" dontVariable assign funktionieren nicht in Funktion (Ajax, 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; 
}); 

arbeiten understend kann ich jede Hilfe dankbar.

Antwort

2
s_return=msg; 

ist innerhalb einer Async-Funktion. Es wird eingestellt, wenn der Server antwortet.

this.value=s_return; 

läuft direkt nach der Anfrage ausgelöst wird. Daher ist s_return noch nicht gesetzt.

Sie müssen es so machen:

$('.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

Der AJAX-Aufruf wird asynchron ausgeführt. Wenn Sie es durchlaufen, werden Sie sehen, dass this.value=s_return; ausgeführt wird, bevor s_return=msg; tut, so s_return ist immer noch leer, wenn Sie die this.value=s_return; Zuweisung tun.

Verwandte Themen