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 に答える