2010-07-24 84 views
1

我里面,我使用jQuery。员额, 一个JavaScript函数,我想在回退返回一个布尔值:jQuery的阿贾克斯后备回报

function is_available() { 
    $.post('ajax', { 
     action: 'mail' 
    }, function(data) { 
     if ($.trim(data) == 'NO_ERROR') { 
      return true; 
     } else { 
      return false; 
     } 
    }); 
} 

但该函数返回undefinied。 我怎样才能返回布尔值?

回答

1

既然你现在有没有运行,直到后来那些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,因为该回调函数发生以后(当前代码尝试使用该值之后)。