我正在嘗試構建一些小函數,用於處理非常具體的事情並在處理程序中使用它們。 我正在嘗試這樣做,發送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