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

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

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

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

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

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

 1 //Yahoo API
 2         var user_count="(网络错误,加载失败)"; //商户数量
 3         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();
 4         $.getJSON(yql_url, function (data) {
 5             try{
 6                 user_count=data.query.results.body.div[3].div.div.ul.li[0].div[0].h4.font;
 7             }catch(e){};
 8             //成功获取结果,并且页面加载完毕
 9             $(function(){
10                 //将结果追加到页面中
11                 $(".user_count").html(user_count);
12                 //如果成功获取,则放入cookie备用
13                 if(user_count!="(网络错误,加载失败)"){
14                     $.cookie('user_count', user_count, {expires: 1});
15                 };
16             });
17         });

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

posted @ 2016-02-21 02:02  MEZW  阅读(1129)  评论(0编辑  收藏  举报