當我更新到版本1.10.2時,我開始有一些jQuery問題。jQuery - 等到函數返回,然後繼續
我一直在尋找答案,但沒有一種方法似乎工作,我可能做錯了什麼。我真的很感謝一些幫助。
主要問題是click事件不會等待validateAjax的結果,而只是說validateBaan是未定義的。我已經檢查了validateAjax函數並且輸出獲取了true或者false的值,但是我估計那時點擊事件已經移動了。我希望click事件等待validateAjax結果,然後繼續。
Click事件:
$('#log-in').on('click', function() {
// triggers validateAjax
var validateBaan = validateAjax('fieldId', 'worker');
// every time I log it says undefined, even though it gets value
// (true or false), but too late
// console.log(validateBaan);
// this function works
var validateShift = checkInput({
shift: {
field: 'btn-group',
hasClass: 'active',
error: 'shifterror'
}
});
// when both are true take some action
if (validateBaan && validateShift) {
...
}
});
這裏是validateAjax功能:
function validateAjax(fieldId, query) {
var output;
// field value
var fieldValue = $('#' + fieldId).val();
// sending ajax request
var ajaxQuery = $.ajax({
type: "GET",
url: "update.php",
data: 'checkup=checkup&baan=' + fieldValue
});
// based on the response, takes action
ajaxQuery.done(function(response) {
if (response.error) {
output = false;
$('.error-' + fieldId).html(response.error);
} else if (response.product) {
$.cookie('tab_name', response.product);
output = true;
} else {
output = true;
}
return output;
});
}
我已經使用jQuery的時候/然後試過,但我沒能得到它的工作。
我從來沒有像這樣的老問題jQuery版本的問題,所以我將不勝感激所有幫助。
Okei,謝謝,試試看。 – Myt
Jeei,它的工作,非常感謝。現在我知道我需要使用回調來完成這些工作。再一次,謝謝你! – Myt
這個答案可以工作,但不需要傳遞迴調。由於'$ .ajax()'返回的對象是promise兼容的,它可以從'validateAjax()'返回,並返回到登錄點擊處理程序中,用鏈接的.done() -callback函數作爲其第一個(也是唯一的)參數。 nett效應是相同的,但這是jQuery 1.7+做事的方式。 Myt,請問你是否想要完整的代碼,我將作爲一個單獨的答案發布 –