ajax同步方式提交请求,beforeSend不起作用,即IE假死 代码如下:

代码如下:functionPopup(url){varreturnurl="";$.ajax({type:"GET",url:"checklogin.php",data:... 代码如下:
function Popup(url){
var returnurl="";
$.ajax({
type: "GET",
url: "checklogin.php",
data: "sessionid=" +$("#sessionid").val()+"&localip="+$("#localip").val(),
async:false,
beforeSend :function(){
$(window.parent.document).find("#popDiv").css("display","block");
$(window.parent.document).find("#bg").css("display","block");
},
success: function(msg) //更新成功
{
$(window.parent.document).find("#popDiv").css("display","none");
$(window.parent.document).find("#bg").css("display","none");
if(msg==1){
returnurl= url;
}else{
returnurl= "www.baidu.com";
}
}
});
return returnurl;
}
展开
 我来答
Yandysqw
2017-11-03
知道答主
回答量:50
采纳率:50%
帮助的人:8万
展开全部
这个原因就是ajax的async设置为false时同步提交。浏览器的渲染(UI)线程和js线程是互斥的,在执行js耗时操作时,页面渲染会被阻塞掉。也就是你这个问题beforeSend里面好像没有执行。其实,已经进beforeSend里面了。只是,你里面的样式设置被阻塞掉了。解决方案:把它改成异步即可async:true。(默认,就是异步。可以直接省略不写。直接把async:false去掉即可)
小耗子吱吱叫
2011-10-05 · TA获得超过109个赞
知道答主
回答量:19
采纳率:0%
帮助的人:22.5万
展开全部
为什么要同步调用呢。这个的确是会出现假死。还是异步调用吧,我前段时间也遇到过,后来改用异步调用才行。
异步调用在循环发出ajax请求的时候会出现不一致的现象,这种情况值能在当前的请求结束之后,在发出下一个请求,只能这样。用异步调用虽然可以解决这个问题,但是在ie下用户体验不好。
更多追问追答
追问
可是我需要的是返回这个returnurl值,一旦采用异步,这个值就是空的,请教有什么好办法改造成异步吗
追答
可以这样改
function Popup(url){
var returnurl="";
$.ajax({
type: "GET",
url: "checklogin.php",
data: "sessionid=" +$("#sessionid").val()+"&localip="+$("#localip").val(),
async:false,
beforeSend :function(){
$(window.parent.document).find("#popDiv").css("display","block");
$(window.parent.document).find("#bg").css("display","block");
},
success: function(msg) //更新成功
{
$(window.parent.document).find("#popDiv").css("display","none");
$(window.parent.document).find("#bg").css("display","none");
if(msg==1){
returnurl= url;
}else{
returnurl= "www.baidu.com";
}
return returnurl;
}
});

}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sdnu_pxd
2011-09-30 · TA获得超过133个赞
知道答主
回答量:190
采纳率:0%
帮助的人:144万
展开全部
alert($(window.parent.document).find("#popDiv"))看看。有没有东西,我直接怀疑没得到。分清是window.parent还是window.opener
追问
这个肯定有,只是同步造成的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式