我只是循环我的Ajax调用,直到12030错误消失.该错误报告为错误here
有谁知道是否有更好的解决方案……因为这需要时间来循环.我读到这是IE的一个已知问题,它间歇性地产生12030错误作为Ajax状态.
var Ajax = {
createAjaxObject: function()
{
var request;
try
{
request = new XMLHttpRequest();
}
catch(error)
{
try
{
request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(error)
{
try
{
request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(error)
{
request = false;
}
}
}
return request;
},
useAjaxObject: function( path, param, ajax_func, html_div )
{
var object = new Ajax.createAjaxObject();
object.open( "POST", path, true );
object.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );
object.setRequestHeader( "Content-length", param.length );
object.setRequestHeader( "Connection", "close" );
object.onreadystatechange = function()
{
if( this.readyState === 4 )
{
if( this.status === 200 )
{
ajax_func( this.responseText, html_div );
}
else
{
Ajax.repeatUseAjaxObject( path, param, ajax_func, html_div );
return false;
}
}
};
object.send( param );
return true;
},
repeatUseAjaxObject: function( path, param, ajax_func, html_div )
{
var state = false,
count = 1;
while(state === false && count <= 5)
{
state = Ajax.useAjaxObject( path, param, ajax_func, html_div );
if( count !== 1 )
{
alert( 'Ajax Object Use Failed ');
}
count++;
}
return state;
}
解决方法:
我有同样的问题,只要AJAX请求是异步的,我找到了一个适合我的解决方案.
解决方案是将AJAX调用包装在setTimeout调用中,延迟为0.
这似乎100%的时间对我有用.
我还与我的一位同事核实,12030错误仍然出现在Internet Explorer 9中.
< rant>所以Billy G和公司认为适合为我们提供新的“Metro”界面,但他们不能打扰修复他们的浏览器,所有网络程序员必须支持< / rant>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。