[英]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);
}
});
}
默認情況下,所有請求都是異步發送的(即默認情況下設置為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.