我的App命名空间上的可能重复:
How to return the response from an AJAX call from a function?
我刚刚定义了一个函数:
版本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很新,也许是范围问题......
我认为我的功能的目标是明确的,有更好的方法来实现这一目标吗?
答案 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
});