3

重複の可能性:
関数からのAJAX呼び出しからの応答を返す方法は?

私のアプリの名前空間で、関数を定義しました。

バージョン1

window.App = {
  isLogged: function () {
    $.get('/user/isLogged', function (data) {
      if (data == 'true') {
        return true;
      }
      return false;
    });
  }
};

バージョン2

window.App = {
  isLogged: function () {
    var test = $.get('/user/isLogged');
    console.log(test.responseText);
  }
};

バージョン1で、firebug'App.isLogged()'で関数を試してみると、未定義の素敵な:Sが表示されます。

バージョン2で、firebugで関数を試してみると、responseTextが未定義のようです:stuck:

私はjavascriptについてかなり新しいです、そして多分スコープの問題...

私の機能の目標は明確だと思いますが、これを達成するためのより良い方法はありますか?

4

1 に答える 1

2

最初のバージョン $.getでは非同期であるため、戻り値は得られません

2番目のバージョン では、フィールド$.getを持たない遅延オブジェクトを返しますresponseText

window.App = {
  isLogged: function () {
    var dfd = $.Deferred();
    $.get('/user/isLogged', function (data) {
      if (data == 'true') {
        return dfd.resolve();
      }
      return dfd.reject();
    });
    return dfd.promise();
  }
};

$.when(App.isLogged()).then(function() {
  //your code
}).fail(function() {
  //fail code
});
于 2013-01-19T13:30:30.717 に答える