首先明确一点,ajax本身是不能跨域的(没有兼容所有主流浏览器的跨域方案),所谓的ajax跨域,不过是使用script标签去请求其他域下的一段js代码,比如下面的这个问题:
baidu地图和google地图使用的不是同一套定位数据,如果你拿google的gps数据,不做任何处理,就放到baidu地图里用,会出现比较大的偏差,为此,api.map.baidu.com提供了提供了一个转变接口,但用普通的ajax的话,就会存在跨域的问题,还好,baidu已经想到了这个问题,这个接口本身就是供跨域用的,比如,我们可以写一个这样的方法:
function g2b(x, y, callback){ window.g2bCallback = callback;//将回调函数放到window下 var u = 'http://api.map.baidu.com/ag/coord/convert?from=2&to=4&mode=1&x=' + x + '&y=' + y + '&callback=g2bCallback';//最后一个参数是回调函数的名字 $.getScript(u);//调用接口 } |
上面$.getScript(u)实际上返回这样一段js代码来以转换结果为参数调用给定的callback方法:
g2bCallback&&g2bCallback( [{"error":0,"x":"MTEuMDA2NTQwNzQ1OTc5","y":"MjIuMDA1OTk4OTkxODk3"}] ) |