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下的问题,不弄了。