微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 修复了Ajax调用的IE 12030重复性错误

我只是循环我的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] 举报,一经查实,本站将立刻删除。

相关推荐