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

一、问题重现

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

1
2
3
4
5
6
$.ajax({
    url: ***,
    type: GET,
    data: data,
    success: function (data) { **** }
});

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

 

二、解决思路

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

1
2
3
4
5
6
7
$.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支持跨域请求。

1
2
3
4
5
6
7
jQuery.support.cors = true;
$.ajax({
    url: ***,
    type: GET,
    data: data,
    success: function (data) { **** }
});

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

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

 

阅读更多
换一批

没有更多推荐了,返回首页