nginx环境下ajax跨域获取json数据实例

今天要开始开发移动端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).')';
	}
}


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/482.html