ajax跨域请求在IE8中存在的问题

时间:2023-03-09 16:54:35
ajax跨域请求在IE8中存在的问题

从没打算怎么去兼容老版本IE,毕竟微软自己都放弃了,可是最近做好的东西在所有的IE下都会出问题:GetJson不执行

本来觉得挺简单的,度娘也给出了一大堆的解决方案,可惜,基本上都是在说缓存,实际上并没有什么卵用。

本身是要通过Yahoo Query Language去获取一个页面中的数据的,如果在所有的IE上都用不了,那的确是个问题。但比较奇怪的是,其他所有浏览器都几乎没有任何问题,直接请求雅虎的地址,然后就能取出结果。

于是一行一行的调试,状态码直接返回了0,于是有点怀疑是否是跨域的问题了。

通过在雅虎API的地址里面添加callback=?,再使用$.GetJson去请求,好了,问题解决。

 //Yahoo API
var user_count="(网络错误,加载失败)"; //商户数量
var yql_url="https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url=%27http://www.example.com%27&format=json&callback=?&env=store://datatables.org/alltableswithkeys/?random="+new Date().getTime();
$.getJSON(yql_url, function (data) {
try{
user_count=data.query.results.body.div[3].div.div.ul.li[0].div[0].h4.font;
}catch(e){};
//成功获取结果,并且页面加载完毕
$(function(){
//将结果追加到页面中
$(".user_count").html(user_count);
//如果成功获取,则放入cookie备用
if(user_count!="(网络错误,加载失败)"){
$.cookie('user_count', user_count, {expires: 1});
};
});
});

所以基本上改来改去,就兼容了个IE8,其他浏览器暂未测试,至少新版的浏览器是没问题了,至于其他老版本浏览器,反正初衷也只是为了解决所有IE下的问题,不弄了。