一、问题重现
本地的脚本请求测试环境的接口
$.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等,但这只是一个测试环境,真实环境并没有出现这个问题。专门讲解决跨域问题,那就是另外一个话题了。