解决$.ajax()在IE10以下失效的问题

一、问题重现

本地的脚本请求测试环境的接口

$.ajax({
	url: ***,
	type: GET,
	data: data,
	success: function (data) { **** }
});

在chrome、Firefox和IE9以上的都正常发送请求,IE10以下没有发送请求。

 

二、解决思路

$.ajax()中把错误信息显示出来

$.ajax({
	url: ***,
	type: GET,
	data: data,
	success: function (data) { **** }
        error: function (a, b, c) {alert(c);}
});

 

三、原来是 No Transport错误

网上说是涉及到跨站脚本攻击,所以不让提交。

四、解决
在$.ajax()前加上下面这句话(jQuery.support.cors = true;),这是对cors协议的一种实现,CORS是W3C中额度一项新特性,能让jQuery支持跨域请求。

jQuery.support.cors = true;
$.ajax({
	url: ***,
	type: GET,
	data: data,
	success: function (data) { **** }
});

注意:实际开发环境中是不可以加上jQuery.support.cors = true;这句话的。

其实JQuery已经提供了专门的方法支持跨域请求,比如jsonp等,但这只是一个测试环境,真实环境并没有出现这个问题。专门讲解决跨域问题,那就是另外一个话题了。

 

 

 

 

posted @ 2017-05-31 13:32  leaf+  阅读(4407)  评论(0编辑  收藏  举报