3

可能重复:
如何从函数的 AJAX 调用返回响应?

在我的 App 命名空间上,我刚刚定义了一个函数:

版本 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 似乎未定义:卡住:

我对javascript很陌生,也许是范围问题......

我认为我的功能目标很明确,有更好的方法来实现这一目标吗?

4

1 回答 1

2

第一个版本 $.get是异步的,这就是为什么你没有得到返回值

在第二个版本 $.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 回答