`

IE8 jquery ajax获取静态资源报错TypeError 拒绝访问

阅读更多

1,出现问题的代码:

 /***
     * 请求静态html 模板
     * @param url
     * @param $jqueryDiv : 四个主要div之一
     * @param templateHandle : 自定义,用于使用Dot js模板函数
     * @param callback : 用于实现模板之后,绑定事件
     * @param templateData : cia的返回数据
     */
    ajaxHtml: function (url, $jqueryDiv, templateHandle, callback, templateData) {
        xhr.ajaxHtmlCommon(url, $jqueryDiv, null, templateHandle, callback, templateData);
    },
    /***
     * ajax 请求静态html文件
     * @param url
     * @param $jqueryDiv
     * @param data
     * @param callback : 回调函数,updateHtml 方法之后执行
     */
    ajaxHtmlCommon: function (url, $jqueryDiv, requestData, templateHandle, callback, templateData) {
        var argument_length = arguments.length;
        var isHasCallback = (argument_length > 4 && callback && typeof callback === 'function');
        var options22 = {
            url: url,
            type: "GET",
            timeout: 18000,
            dataType: 'html',
            success: function (html) {
                updateHtml($jqueryDiv, html, templateHandle, templateData);
                /* var $formInput = jqueryObj.find('textarea:first');//让subContent 中的textarea聚焦
                 if ($formInput.length != 0) {//先判断能不能获取到textarea
                 $formInput.get(0).focus();
                 }*/
                if (isHasCallback) {
                    callback($jqueryDiv, html);
                }
            },
            error: function (er) {
                if (er.statusText == 'timeout') {
                    updateHtml($jqueryDiv, "<div style='color: red'>连接服务器超时!</div>");
                } else {
                    var errorMessage2;
                    if (er.responseText) {
                        errorMessage2 = er.responseText;
                    } else {
                        errorMessage2 = er.statusText;
                    }
                    console.log('error:' + errorMessage2);
                    updateHtml($jqueryDiv, errorMessage2, templateHandle, templateData);
                }
                if (isHasCallback) {
                    callback($jqueryDiv, er);
                }
            }
        };
        if (argument_length > 2 && requestData != null && requestData != undefined) {
            options22.data = requestData;
            options22.type = "POST";
        }
        $.ajax(options22);
    }

浏览器版本:IE8

获取html模板时报错:

var ajaxHtml4IE8 = function () {
            xhr.ajaxHtml('cross_domain.html', $('#crossDiv'), null, null, null);
        }

报错信息:TypeError 拒绝访问 

 

 2,解决方法:

(1)在js文件头部增加:

jQuery.support.cors = true;

(2) html文件引入jQuery.XDomainRequest.js

<!--[if IE 8]>
    <script type="text/javascript"
            src="jQuery.XDomainRequest.js"></script>
    <![endif]-->

(3) 静态html模板前面增加:

<meta http-equiv="Access-Control-Allow-Origin" content="*">

 

注意:

(1)静态HTML模板前要增加<meta http-equiv="Access-Control-Allow-Origin" content="*">,表示服务器端支持跨域.

(2)只有IE8 才有跨域拒绝访问的问题,所以引入第三方js文件时,要使用<!--[if IE 8]>

jQuery.XDomainRequest.js 见附件

参考:https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest

http://stackoverflow.com/questions/10232017/ie9-jquery-ajax-with-cors-returns-access-is-denied

  • 大小: 77.2 KB
2
2
分享到:
评论
1 楼 henley02 2016-03-22  
大神。。。为啥我的不行呀

相关推荐

    jquery.xdomainrequest.js

    解决IE8 jquery ajax获取静态资源报错TypeError 拒绝访问问题

    Sawyer-zh#study-note#Vue-js路由报错TypeError-Cannot-read-property-c-

    title: 'Vue.js路由报错:TypeError: Cannot read property ''_c'' of undefined'错误详情:像上面这

    JQuery报错Uncaught TypeError: Illegal invocation的处理方法

    jQuery作为一款流行的JavaScript库,极大地简化了JavaScript编程,特别是在进行DOM操作和Ajax请求方面。然而,在使用jQuery过程中,开发者有时会遇到JavaScript控制台抛出“Uncaught TypeError: Illegal invocation...

    解决Ajax方式上传文件报错”Uncaught TypeError: Illegal invocation”

    今天使用ajax上传文件时,出现了错误。数据传输的方式是通过定义formData完成的,提交的文件对象也设置为dom对象,但是还是不能发送请求。F12看到后台报了个错误:Uncaught TypeError: Illegal invocation,百度了...

    Vue 报错TypeError: this.$set is not a function 的解决方法

    然而,当你遇到`TypeError: this.$set is not a function`的错误时,通常是因为`this`上下文没有正确指向Vue实例。下面我们将深入探讨这个问题及其解决方案。 ### 报错场景 在开发过程中,你可能在尝试将API获取的...

    基于HTML5 SVG可互动的3D标签云jQuery插件

    3. `jQuery之家.url` - 这可能是一个链接到jQuery相关资源的快捷方式,方便开发者获取更多关于jQuery的信息。 4. `css` 文件夹 - 存放了与插件相关的CSS样式文件,虽然插件本身不需要额外的CSS,但可能包含了默认...

    解决Ajax方式上传文件报错"Uncaught TypeError: Illegal invocation"

    在Web开发中,使用Ajax进行异步文件上传是一种常见的做法,它可以提供无刷新的用户体验。然而,开发者在实现这一功能时可能会遇到一些错误,如"Uncaught TypeError: Illegal invocation"。这个错误通常出现在尝试...

    解决jquery插件:TypeError:$.browser is undefined报错的方法

    1. jQuery插件报错问题:在使用jQuery插件时可能会遇到"TypeError: $.browser is undefined"的报错,这主要是因为从jQuery 1.9版本开始,jQuery移除了$.browser和$.browser.version这两个用于获取浏览器基本信息的...

    解决Python 写文件报错TypeError的问题

    在尝试写入从HTTP请求中获取的文件时,原始的代码试图以文本模式('w')打开文件,这导致了错误:“TypeError at /upload/write() argument must be str, not bytes”。这个错误表明,程序正尝试将字节对象(bytes)...

    tinymce静态资源文件

    在“tinymce4.7.5”这个压缩包中,包含了Tinymce的特定版本——4.7.5的所有静态资源文件,这些文件使得开发者能够集成并自定义编辑器以满足各种需求。 首先,我们要了解Tinymce的核心概念。Tinymce是一个基于...

    bootstrap+jquery项目引入文件报错的解决方法

    在开发使用Bootstrap和jQuery的前端项目时,经常会遇到各种各样的引入文件报错问题。本文将详细解释一些常见的报错,并提供相应的解决方案。 1. jQuery未定义的错误 这是最常见的问题之一。当尝试使用jQuery相关的...

    python实现车道线识别程序

    车道线识别程序是自动驾驶和智能交通系统中的关键组成部分,它能帮助车辆感知周围环境,确保行车安全。本项目是利用Python编程语言结合OpenCV库来实现这一功能的实例。OpenCV是一个强大的开源计算机视觉库,提供了...

    jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法

    不返回`_ajax`的结果会导致在使用`load`等依赖`ajax`方法的jQuery函数时,因为`ajax`没有返回`Promise`对象而报错:“Uncaught TypeError: Cannot call method 'done' of undefined。”因此,`return _ajax(_opt);`...

    jquery-1.8.3.min.js

    jQuery1.8.2在IE9中调用ajax失败的问题 jQuery1.7.1不能正确地设置IE7中克隆元素的tabindex属性 压缩的JS文件包含非ASCII字符 如果body样式设置为display:none,则$('body')。show()无法工作 在IE9中element.css...

    django启动uwsgi报错的解决方法

    在介绍如何解决Django启动uwsgi报错的问题之前,我们需要先弄清楚几个关键概念,它们分别是WSGI、uwsgi和uWSGI。这三者虽然名称相似,但代表的含义和作用是不同的。 首先,WSGI代表的是Web服务器网关接口,它是一个...

    VideoJS —— HTML5 视频播放器

    关于上面的代码片段,需要注意的是标签中的src属性指向的URL地址是已经上传至腾讯云并转码后的视频资源地址。poster属性则规定了视频下载时显示的图像,或者是用户点击播放按钮之前所显示的预览图,通常被称为海报...

Global site tag (gtag.js) - Google Analytics