我无法理解为什么变量“return”不起作用
$('.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;
});
我将不胜感激。
答案 0 :(得分: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 :(得分:1)
AJAX调用以异步方式运行。如果您单步执行该操作,则会在this.value=s_return;
之前看到s_return=msg;
执行,因此当您执行this.value=s_return;
分配时,s_return仍然为空。