jQuery的阿贾克斯后备回报
问题描述:
我里面,我使用jQuery。员额, 一个JavaScript函数,我想在回退返回一个布尔值:jQuery的阿贾克斯后备回报
function is_available() {
$.post('ajax', {
action: 'mail'
}, function(data) {
if ($.trim(data) == 'NO_ERROR') {
return true;
} else {
return false;
}
});
}
但该函数返回undefinied。 我怎样才能返回布尔值?
答
既然你现在有没有运行,直到后来那些return
语句,你需要调用依赖于从回调的数据的任何代码,例如:
function check_available() {
$.post('ajax', {
action: 'mail'
}, function(data) {
myNextFunction($.trim(data) == 'NO_ERROR');
});
}
function myNextFunction(isAvailable) {
//do something, this runs after the AJAX request completes the check
}
因此,而不是治疗的是synchronosuly与一个return
语句,将代码路径视为异步,并启动任何代码需要$.post()
的回调“可用”值,它将在服务器请求返回时执行,并且您需要的布尔值可以使用。
目前它返回undefined
,因为该回调函数发生以后(当前代码尝试使用该值之后)。