通过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请求
posted @ 2017-05-21 20:42  风烟  阅读(145)  评论(0编辑  收藏  举报