IE8和IE9在实现跨域请求的时候使用XDomainRequest自己实现了一套,所以即使是使用jquery1.9.1版本也无法直接兼容IE8,IE9的跨域请求。
解决方案
StackOverflow上对此问题的回答说得很清楚
http://stackoverflow.com/questions/24206782/ajax-call-not-working-in-ie8
http://stackoverflow.com/questions/3362474/jquery-ajax-fails-in-ie-on-cross-domain-calls#11267937
有两种解决方案
自己抽象定义一个ajax请求函数
这个方法在上面第二个链接已经有人做好了,但是我嫌有点麻烦。
重定义jquery的$. ajaxTransport方法
有人已经做好了,详见这里。https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
不过使用它有几点非常需要注意
- 只能是GET或者是POST请求
- POST请求的数据类型必须是text/plain
- 只支持HTPP和HTTPS协议
- 请求主体和被请求接口协议必须相同,也就是大家要么都是HTTP,要么都是HTTPS
- 必须是异步的