ajax同步警告
这个警告遇到过多次。
场景:ajax改变全局变量供后面代码使用,
问题:如何避免出现此类警告。或者有没有其他的替代的方法。
对jquery不甚熟悉,还望各位不吝赐教。 展开
ajax出现的同步警告是无法避免的,其实是造成主线程锁死主要还是XMLHttpRequest没有设置超时处理。
jquery ajax异步的执行方案:
1、添加async:false.即修改为同步,代码如下:
function getAjaxReturn()
{
var bol=false;
$.ajax({
type:"POST",
async:false,
http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx",
data:"username="+vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"<img src='images/ok.gif'/><b><font color='#ffff00'>该用户名可以使用</font></b>",false)
// return true;
bol=true;
}
else
{
showtipex(vusername.id,"<img src='images/cancel.gif'/><b><font color='#ffff00'>该用户已被注册</font></b>",false);
vusername.className="bigwrong";
//return false;
}
}
});
return bol;
}
2、 通过传入一个函数解决这个问题,代码:
function getAjaxReturn(success_function,fail_function)
{
var bol=false;
$.ajax({
type:"POST",
http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx",
data:"username="+vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"<img src='images/ok.gif'/><b><font color='#ffff00'>该用户名可以使用</font></b>",false)
success_function(msg);
}
else
{
showtipex(vusername.id,"<img src='images/cancel.gif'/><b><font color='#ffff00'>该用户已被注册</font></b>",false);
vusername.className="bigwrong";
fail_function(msg);
//return false;
}
}
});
function success_function(info)
{
//do what you want do
alert(info);
}
funciont fail_function(info)
{
//do what you want do
alert(info);
}
刚刚找了下,和大家分享一下。采用Web Workers多线程执行,采用postMessage和onmessage实现数据交换,这样处理不会阻塞主线程。
其实是造成主线程锁死主要还是XMLHttpRequest没有设置超时处理。用jquery的话,一般来说设置timeout就行了。不用插件就比较难搞了。
刚刚找了下,和大家分享一下。采用Web Workers多线程执行,采用postMessage和onmessage实现数据交换,这样处理不会阻塞主线程。