今天要开始开发移动端APP,移动APP需要跨域来获取接口数据,所以需要我们在nginx下做下配置,相对于apache来说nginx配置更加简单,只需要在网站目录下添加一个文件crossdomain.xml,这个文件名是固定的,内容如下:
<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy>
然后我们的ajax也需要改造下,主要是吧json改成jsonp来获取json数据,具体实例如下:
$.ajax({ url: 'http://www.admin.com/api/index.html?callback=?', type: 'GET', dataType: 'jsonp', jsonp: 'callback', success: function(json){ var str; for(var p in json){ //console.log(json[p].title); str = '<li><a href="detail.html?id='+json[p].id+'">'+json[p].title+'<\/a><\/li>' $('#list').append(str); } } });
服务端控制器主要是改成返回一个callback回调来返回数据,ajax实例:
<?php namespace app\index\controller; class Api extends Base{ public function index(){ $data = db('picture')->where('status=99')->order('id desc')->limit(10)->select(); echo $_GET['callback'].'('.json_encode($data).')'; } public function detail(){ $id = input('param.id'); $r = db('picture')->where('id='.$id)->find(); $r1 = db('picture_data')->where('id='.$id)->find(); $data = array_merge($r, $r1); echo $_GET['callback'].'('.json_encode($data).')'; } }