Javascript函数在firebug上返回undefined

时间:2013-01-19 13:18:06

标签: javascript jquery

  

可能重复:
  How to return the response from an AJAX call from a function?

我的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很新,也许是范围问题......

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

1 个答案:

答案 0 :(得分: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
});