一、$.ajax 总是请求失败,直接跳转到 error 函数中,报错:拒绝访问。
网上的一些解决方法都试过了还是没有用,比如再请求之前设置 jQuery.support.cors = true,并调用 jquery.xdomainrequest.min.js 。更改 IE 设置,将通过域访问数据设置为允许。这些方法都试过了,都没有用。
最后是在 $.ajax 运行之前添加如下代码成功的 。、
jQuery.support.cors = true;
jQuery.ajaxSetup({
xhr: function() {
if (window.ActiveXObject) {
return new window.ActiveXObject("Microsoft.XMLHTTP");
} else {
return new window.XMLHttpRequest();
}
}
});
二,发布到服务器端,ajax报 没有权限问题
在使用jquery的ajax进行跨域传值的时候,程序报错:
microsoft jscript 运行错误:没有权限
并指向jquery中的函数。
后来发现是IE浏览器的安全性设置问题,解决方法如下:
点击IE浏览器的的“工具->Internet 选项->安全->自定义级别”
将“其他”选项中的“通过域访问数据源”选中为“启用”或者“提示”,点击确定就可以了。
如果还是err函数返回错误的话
{description: “没有权限”, message: “没有权限”, name: “Error”, number: -2146828218}
最终,查到问题原因在于,兼容模式会降低程序运行的IE版本。
<meta http-equiv=X-UA-Compatible content=IE=EmulateIE7> (指定当前页面浏览器为IE7)
三、如果jQuery兼容ie10一下还是报错就使用ie的原生的XDomainRequest
// 异步请求服务器数据函数
function jsonData(type,url,data,callback){
xmlhttp = new XDomainRequest()
// 请数据
xmlhttp.open(type, url,true);
xmlhttp.onload = function(){
callback(xmlhttp)
}
xmlhttp.ontimeout = function () {}
xmlhttp.onprogress = function () {}
// 发送请求
xmlhttp.send(data);
}