簡體   English   中英

通過Ajax發送請求時如何停止掛頁

[英]How can i stop hanging page when a request is send via Ajax

我面臨着一個嚴重的問題...每當我使用Ajax發送請求並獲得響應時,我的瀏覽器就被掛起了..並且沒有顯示加載等...

但是當我從Ajax檢索到響應時,瀏覽器和頁面再次開始工作...

下面是我使用的代碼.....

function ShowContestStatus(contestID)
{
    $("#showContestDetails").html('<div class="loadercontest"><img src="assets/images/loading.gif">Loading Contest....</div>');

    $("#RadioGroup1_0, #RadioGroup1_1, #RadioGroup1_2").prop('disabled', true);
    $.ajax({
            url:"process/processMyContest.php",
            type:'POST',
            cache:false,
            async:false,
            data : {act : 'showcontest', cid : contestID },
            success:function(result)
            { 
                $("#showContestDetails").html(result);
                $("#RadioGroup1_0, #RadioGroup1_1, #RadioGroup1_2").prop('disabled', false);
            }
        });
    }

請對此提供幫助...當您發送請求時,我希望得到與其他網站相同的響應,並且他們使用ajax時,該頁面既沒有掛起,也可以看到諸如滾動等的每個處理……

所以請給我建議好主意...。這樣我就可以擺脫它,使我的ajax在頁面上保持平滑,而不會影響和絞死其他人...

提前致謝...:)

問題是async:false ...由於您的ajax請求是同步的,腳本執行將等待請求完成才能繼續。

由於瀏覽器使用單線程執行模式(它將執行腳本或重新繪制,或者一次等待用戶事件-並非同時執行),因此您的瀏覽器標簽將停止監聽用戶(因此看起來好像已被掛起) )

function ShowContestStatus(contestID) {
    $("#showContestDetails").html('<div class="loadercontest"><img src="assets/images/loading.gif">Loading Contest....</div>');

    $("#RadioGroup1_0, #RadioGroup1_1, #RadioGroup1_2").prop('disabled', true);
    $.ajax({
        url: "process/processMyContest.php",
        type: 'POST',
        cache: false,
        //remove async: false,
        data: {
            act: 'showcontest',
            cid: contestID
        },
        success: function (result) {
            $("#showContestDetails").html(result);
            $("#RadioGroup1_0, #RadioGroup1_1, #RadioGroup1_2").prop('disabled', false);
        }
    });
}

Ajax.async

默認情況下,所有請求都是異步發送的(即默認情況下設置為true)。 如果需要同步請求,請將此選項設置為false。 跨域請求和dataType:“ jsonp”請求不支持同步操作。 請注意,同步請求可能會暫時鎖定瀏覽器,從而在請求處於活動狀態時禁用任何操作 從jQuery 1.8開始,不建議使用async:false和jqXHR($ .Deferred); 您必須使用成功/錯誤/完成回調選項,而不要使用jqXHR對象的相應方法,例如jqXHR.done()或已棄用的jqXHR.success()。

將async:true設為使瀏覽器在運行ajax代碼時偵聽其他事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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