簡體   English   中英

在異步ajax請求之前運行一個函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM