通过jsonp实现跨域
原理是脚本的src可以跨域
- 例如下面这样的代码
<script type="text/javascript">
function dosomething(jsondata){
//处理获得的json数据
}
</script>
<script src="http://example.com/data.php?callback=dosomething"></script>
- 一定要和后端约定好,后端返回的是一个执行的js文件
<?php
$callback = $_GET['callback'];//得到回调函数名
$data = array('a','b','c');//要返回的数据
echo $callback.'('.json_encode($data).')';//输出
?>
- 输出结果为dosomething(['a', 'b', 'c']);
这样前端就可以利用后端传过来的数据进行使用了。
如果使用jquery,可以通过他的方法直接进行jsonp操作了
<script type="text/javascript">
$.getJSON('http://example.com/data.php?callback=?,function(jsondata)'){
//处理获得的json数据
});
</script>
总结
- jsonp兼容性好
- 只支持get请求