我正在尝试构建一些小函数,用于处理非常具体的事情并在处理程序中使用它们。 我正在尝试这样做,发送JSON对象到一个PHP脚本,然后以json对象的形式返回响应。jquery .done返回值 - 混淆
这是我写到目前为止功能:
function isRegistered(courseObj){
var posting = $.post("is-user-registered.php", courseObj);
posting.done(function(data){
var res = $.parseJSON(data);
if(res.response == "success"){
return 0;
} else {
return 1;
}
});
}
这是处理程序:
$('a.button.findDelegate').bind("click", function(){
var textToSearch = $('#findUserBox').val();
var txtObj = {};
var courseObj = {};
courseObj['courseId'] = $('input[name=courseId]').val();
courseObj['email'] = txtObj['text'] = textToSearch;
if(txtObj['text'].length > 2){
if(isRegistered(courseObj) === 0){
console.log("search user and then add it to the list");
} else {
console.log("this user is already registered lets throw an error");
}
}
return false;
});
的问题是,isRegistered
总是返回undefined。 我几乎可以肯定,这与.done没有被直接执行有关,因为在Chrome浏览器undefined
实际上是在ajax调用之前被记录的。
如果是这种情况,我该如何强制处理程序等待isRegistered
响应?
我打开所有的建议,我可能使用错误的工具(jQuery)来做到这一点?
抱歉,缺乏清晰度。
AJAX在默认情况下是异步的,你需要使用的要求回调函数的代码,根据这个 –
的可能重复你的逻辑[如何返回从响应AJAX调用?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – gdoron
我增加了更深入的答案您的问题。我的答案是帮助你还是应该删除它/ – gdoron