开发者社区> 黄威的世界> 正文

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

简介: <div class="markdown_views"> <p><strong>1. 出现问题的代码</strong></p> <pre class="prettyprint"><code class="language-javascript hljs "> <span class="hljs-comment">/*** * 请求静态html 模板 * @
+关注继续查看

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=”*”>
静态html模板

注意:
(1)静态HTML模板前要增加,表示服务器端支持跨域.
(2)只有IE8 才有跨域拒绝访问的问题,所以引入第三方js文件时,要使用< !–[if IE 8]>
(3)jquery-1.11.1.js 及以上版本不支持IE8
jQuery.XDomainRequest.js 见附件
参考:https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
http://stackoverflow.com/questions/10232017/ie9-jquery-ajax-with-cors-returns-access-is-denied

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何理解Ajax与jQuery中的Ajax?
如何理解Ajax与jQuery中的Ajax?
36 0
spring boot jquery ajax ie8解决跨域
spring boot jquery ajax ie8解决跨域
52 0
JQuery 的 Ajax 请求(重点****)
JQuery 的 Ajax 请求(重点****)
57 0
jquery ajax 和servlet json 结合的简单小例子
jquery ajax 和servlet json 结合的简单小例子
55 0
jQuery封装Ajax,SpringMVC使用Ajax的配置
jQuery封装Ajax,SpringMVC使用Ajax的配置
66 0
JQuery Ajax实现三级联动
本文实例为大家分享了ajax实现三级联动的具体代码
113 0
jQuery中的Ajax
jQuery中的Ajax
51 0
【jquery Ajax】基础概念与使用教学
【jquery Ajax】基础概念与使用教学
80 0
【jquery Ajax】接口的学习与Postcode插件的使用
【jquery Ajax】接口的学习与Postcode插件的使用
77 0
【jquery Ajax 练习】图书管理
【jquery Ajax 练习】图书管理
64 0
+关注
黄威的世界
我是一个热衷IT技术的人,希望自己不断地设计开发出对别人非常有用的软件。有近7年的java开发经验(包括2年Android开发经验)和一年左右的linux使用经验。擅长Java Web后台开发 ,喜欢研究新的各种实用技术
文章
问答
视频
文章排行榜
最热
最新
相关课程
更多
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载