[英]Running a function before async ajax request
我正在嘗試在異步ajax請求之前運行一個函數。 但是,在異步請求獲得響應后,函數正在運行。
有什么方法可以解決這個問題嗎?
block();
ajaxRequest= $.ajax({
url: siteURL+'includes/ajax/action.php',
type: "POST",
async: false,
data: {productID : productID},
dataType: "json"
});
ajaxRequest.done(function(data) {
block(true);
if (data === false) {
alerts('error title','error info here', 'error', 200);
return false;
}
});
ajaxRequest.fail(function(jqXHR, textStatus) {block(true); alerts('error title','error info','error');});
confirm();
我在這些代碼后運行了更多的函數。 但正如我之前所說, block();
函數正在等待異步ajax請求得到響應。
如果我不運行異步,那么我會同時運行block()
和confirm()
函數,所以return false;
失去了所有的意義。
PS我在提交表單時運行這些代碼,因此如果異步請求失敗,我不希望它在其后運行任何其他代碼。 但是當它異步運行時, block()
等待直到返回響應。
你的問題是async:false
。 您的請求不是異步請求,而是同步請求。 它會阻止javascript代碼和瀏覽器呈現在處理請求時發生。 使用當前的設置,刪除async: false,
應該沒有任何害處async: false,
從而使其異步。
block();
ajaxRequest= $.ajax({
url: siteURL+'includes/ajax/action.php',
type: "POST",
data: {productID : productID},
dataType: "json"
});
ajaxRequest.done(function(data) {
block(true);
if (data === false) {
alerts('error title','error info here', 'error', 200);
return false;
}
});
ajaxRequest.fail(function(jqXHR, textStatus) {block(true); alerts('error title','error info','error');});
ajaxRequest.always(confirm);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.