0

重複の可能性:
Jquery:呼び出し元関数へのajax呼び出しの値を返しますか?

以下のコードでは、

私はajax呼び出しをそれを必要とする関数に入れようとしていますが、makeIt()はajax呼び出しから「usa」を返しませんか?それともこれはすべて間違っていますか?

var makeIt = function () {
    var getStuff = function () {
        return $.ajax({
          type: "POST",
          url: "my.php",
          data: {
            id: "2"
          },
          success: function (data) {
            data
          }, // data will return string "usa"
          error: function () {
            alert("error");
          }
        });
      };
    return getStuff();
  };
var result = makeIt() //result should = "usa"
4

3 に答える 3

2

関数に書き込むだけdataではsuccess何も達成されません。

  success: function (data) {
    data
  }

それは次のようなものである必要があります

  success: function (data) {
     doSomethingWith(data);
  }
于 2012-07-11T09:18:30.130 に答える
2

あなたはそれを間違っています。$ .ajax呼び出しは任意の時間であり、makeItが$ .ajax呼び出しによって取得された値を返す方法はありません。代わりに、これを行うことができます。

var makeIt = function (callback) {
    $.ajax({
        type: "POST",
        url: "my.php",
        data: { id: "2" },
        success: callback,
        error: function () { alert("error"); }
    });
};

makeIt(function (result) { 
    //result should = "usa"
});  

そうすれば、すべてのパラメーターとエラー処理が提供された、$。ajax呼び出しの優れたラッパーが得られます。

于 2012-07-11T09:21:49.280 に答える
1

「結果変数」をグローバル変数として定義します。

次に、プロジェクトに機能を追加します。

var result;

var makeIt = function () {


    var getStuff = function () {

       return $.ajax({
            type: "POST",
            url: "my.php",
            data: { id: "2" },
            success: function (data) { fnResult(data) },
            error: function () { alert("error"); }
        });


    };

function fnResult(data){result = data};
于 2012-07-11T09:21:59.020 に答える