1

我无法理解为什么变量“s_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;
});

我将不胜感激。

4

2 回答 2

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;
    });

});
于 2012-04-04T22:42:49.433 回答
1

AJAX 调用异步运行。如果你单步执行它,你会看到它this.value=s_return;之前执行,所以当你做分配s_return=msg;时 s_return 仍然是空的。this.value=s_return;

于 2012-04-04T22:42:42.543 回答