一、通过jsonp跨域
在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的。
但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的。
jsonp的原理:通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,
并且会把我们需要的json数据作为参数传入。所以jsonp是需要服务器端的页面进行相应的配合的。
例:<script>
function dosomething(jsondata){
//处理获得的json数据
}
</script>
<script scr="http://example.com/data.php?callback=dosomething"></script>
结果是:dosomething(data.php文件返回的数据==我们需要的json数据)
用jquery:
<script>
$.getJSON('http://example.com/data.php?callback=?',function(jsondata){
//处理获得的json数据
});
</script>
$.getJSON方法:
会自动判断是否跨域,不跨域的话,就调用普通的ajax方法;
跨域的话,则会以异步加载js文件的形式来调用jsonp的回调函数。
二、document.domain方法
三、iframe(window.name)
四、postMessage
五、本地代理
六、flash