因为浏览器同源策略,a域名的js向b域名ajax请求会被禁止。JS实现跨越访问接口有2中办法。javascript
1.后端接口设置容许跨越的header头。php
//header('Access-Control-Allow-Origin:*'); //支持全域名访问,不安全,部署后须要固定限制为客户端网址 header('Access-Control-Allow-Origin:http://www.example-a.com'); //设置的是带协议的url,而不是一个域名。能够设置多个url,用逗号分隔 echo json_encode(['name'=>'lucy']);}
客户端正常ajax请求便可。java
2.客户端经过jsonp请求,服务器不用设置跨越header。关于jsonp原理这里再也不说,能够另外查找资料。下面给出个实现的具体方法。jquery
客户端请求,以jquery实现为例子ajax
<script type="text/javascript"> $(document).ready(function(){ $.ajax({ type : "get", async: false, url : "http://www.example-a.com/api.php?id=1", dataType: "jsonp", jsonp:"callback", //请求php的参数名 //jsonpCallback: "jsonhandle",//要执行的回调函数,(jquery中,这个参数能够省略,jquery会随机生成一个名字) success : function(data) { console.log(data); } }); }); </script>
api.phpjson
<?php //完成业务逻辑 得到数据 echo $_GET['callback']. '('. json_encode($data). ')'; //$_GET['callback'],就是上面jquery中jsonp请求的 ‘jsonp’参数
?>