Javascript 当通过Ajax发送请求时,如何停止挂起页面
我面临一个严重的问题。。。每当我使用Ajax发送请求并获得响应时,我的浏览器就会挂起。。并显示无负载等 但当我从Ajax中检索到响应时,浏览器和页面再次开始工作 下面是我使用的代码Javascript 当通过Ajax发送请求时,如何停止挂起页面,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我面临一个严重的问题。。。每当我使用Ajax发送请求并获得响应时,我的浏览器就会挂起。。并显示无负载等 但当我从Ajax中检索到响应时,浏览器和页面再次开始工作 下面是我使用的代码 function ShowContestStatus(contestID) { $("#showContestDetails").html('<div class="loadercontest"><img src="assets/images/loading.gif">Loading
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);
}
});
}
功能显示竞赛状态(竞赛ID)
{
$(“#showCompetingDetails”).html('加载竞赛…);
$(“#射线组1_0,#射线组1_1,#射线组1_2”).prop('disabled',true);
$.ajax({
url:“process/processMyContest.php”,
类型:'POST',
cache:false,
async:false,
数据:{act:'showcatest',cid:competitid},
成功:功能(结果)
{
$(“#showCompetingDetails”).html(结果);
$(“#射线组1_0,#射线组1_1,#射线组1_2”).prop('disabled',false);
}
});
}
请帮我做这个。。。我想得到与其他网站相同的响应,当你发送一个请求时,他们使用的是ajax,页面既没有被挂起,也可以看到滚动等处理
所以请给我提一些好主意。。。。所以我可以摆脱它,并使我的ajax页面平滑,而不会影响和激怒其他人挂
提前感谢…:)问题是
async:false
。。。由于ajax请求是同步的,因此脚本执行将等待请求完成后继续执行
由于浏览器使用单线程执行模式(一次执行脚本、重新绘制或等待用户事件,而不是同时执行所有事件),因此浏览器选项卡将停止侦听用户(因此看起来像是挂起了)
功能显示竞赛状态(竞赛ID){
$(“#showCompetingDetails”).html('加载竞赛…);
$(“#射线组1_0,#射线组1_1,#射线组1_2”).prop('disabled',true);
$.ajax({
url:“process/processMyContest.php”,
键入:“POST”,
cache:false,
//删除异步:false,
数据:{
表演:"表演比赛",,
cid:
},
成功:功能(结果){
$(“#showCompetingDetails”).html(结果);
$(“#射线组1_0,#射线组1_1,#射线组1_2”).prop('disabled',false);
}
});
}
默认情况下,所有请求都是异步发送的(即设置为
默认情况下为true)。如果需要同步请求,请将此选项设置为
错。跨域请求和数据类型:“jsonp”请求不会
支持同步操作请注意,同步请求可能会
暂时锁定浏览器,禁用请求时的任何操作
处于活动状态。从jQuery1.8开始,在jqXHR中使用async:false
($.Deferred)已弃用;您必须使用success/error/complete命令
回调选项,而不是jqXHR的相应方法
对象,例如jqXHR.done()或不推荐使用的jqXHR.success()
问题是
async:false
。。。由于ajax请求是同步的,因此脚本执行将等待请求完成后继续执行
由于浏览器使用单线程执行模式(一次执行脚本、重新绘制或等待用户事件,而不是同时执行所有事件),因此浏览器选项卡将停止侦听用户(因此看起来像是挂起了)
功能显示竞赛状态(竞赛ID){
$(“#showCompetingDetails”).html('加载竞赛…);
$(“#射线组1_0,#射线组1_1,#射线组1_2”).prop('disabled',true);
$.ajax({
url:“process/processMyContest.php”,
键入:“POST”,
cache:false,
//删除异步:false,
数据:{
表演:"表演比赛",,
cid:
},
成功:功能(结果){
$(“#showCompetingDetails”).html(结果);
$(“#射线组1_0,#射线组1_1,#射线组1_2”).prop('disabled',false);
}
});
}
默认情况下,所有请求都是异步发送的(即设置为
默认情况下为true)。如果需要同步请求,请将此选项设置为
错。跨域请求和数据类型:“jsonp”请求不会
支持同步操作请注意,同步请求可能会
暂时锁定浏览器,禁用请求时的任何操作
处于活动状态。从jQuery1.8开始,在jqXHR中使用async:false
($.Deferred)已弃用;您必须使用success/error/complete命令
回调选项,而不是jqXHR的相应方法
对象,例如jqXHR.done()或不推荐使用的jqXHR.success()
问题是
async:false
。。。由于ajax请求是同步的,因此脚本执行将等待请求完成后继续执行
由于浏览器使用单线程执行模式(一次执行脚本、重新绘制或等待用户事件,而不是同时执行所有事件),因此浏览器选项卡将停止侦听用户(因此看起来像是挂起了)
功能显示竞赛状态(竞赛ID){
$(“#showCompetingDetails”).html('加载竞赛…);
$(“#射线组1_0,#射线组1_1,#射线组1_2”).prop('disabled',true);
$.ajax({
url:“process/processMyContest.php”,
键入:“POST”,
cache:false,
//删除异步:false,
数据:{
表演:"表演比赛",,
cid:
},
成功:功能(结果){
$(“#showCompetingDetails”).html(结果);
$(“#射线组1_0,#射线组1_1,#射线组1_2”).prop('disabled',false);
}
});
}
默认情况下,所有请求都是异步发送的(即设置为
默认情况下为true)。如果需要同步请求,请将此选项设置为
错。跨域请求和数据类型:“jsonp”请求不会
支持同步操作<斯特罗
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);
}
});
}