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模板前要增加,表示服务器端支持跨域.
(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
版权声明:本文为博主原创文章,未经博主允许不得转载。
IE8 jquery ajax获取静态资源报错TypeError 拒绝访问
原文地址:http://blog.csdn.net/hw1287789687/article/details/46976155