-1

重複の可能性:
変数が返されない JQuery

ここで何が問題なのかはわかりませんが、JQuery Ajax .get 呼び出しの結果の値が失われています。(問題のために単純化されたコード)

ファイル: SomeJSFile.js

var MyApp = function () {

 this.GetAThing = function(url){

 var result = "";
        $.get(url, function (data) {
            result = data;
            alert(data); // Alert works and 'data' looks great! 
            result = data;
        });
        alert(result); // nothing, no value
        return result; // no good since it has no value
  };

 return this;
};

テスト用の基本的なhtmlページでこのファイルを使用しています。

既読: jQuery async ajax query and return value problem (scope,closure)

4

2 に答える 2

1

result非同期のリクエストを送信した直後の値をアラートしてresultいるため、古い値がまだ残っています。値は、ハンドラーが実行される時点であるリクエストが完了すると変更されます。

何が起こるかのタイムラインは次のとおりです。

  1. resultの値が割り当てられます""
  2. AJAX リクエストが URL に送信される
  3. の値resultが警告されます (まだ空の文字列です)
  4. AJAX リクエストが完了する
  5. の値がresult応答に設定されます
  6. 応答の値が警告されます
于 2012-12-06T20:21:23.303 に答える
0

内部呼び出しからその結果の値を取得する唯一の方法は、内部関数を呼び出し、その戻り値を外部関数で使用することだと思います。このようなものかもしれません:

var MyApp = function () {
 function getUrl() {
  $.get(url, function (data) {
   result = data;
   alert(data); 
   result = data;
   return result;
  };
 }

 var result = getUrl();
 return result;
}
于 2012-12-06T20:40:45.080 に答える