/**
* [apiReturn 用于给app提供接口使用 带有请求结果状态表示,和结果提示,默认返回json]
* @param [number] $status [请求结果的状态标识,设定后要在文档中给予说明]
* @param string $message [请求结果的提示语句]
* @param [array] $data [请求返回的数据,app前端需要的数据]
* @param [string] $type [要返回的数据类型,支持json,xml,默认返回json]
* @return [json或xml] [返回数据]
*/
protected function apiReturn($status, $message = '', $data, $type)
{
if (!is_numeric($status) || !is_string($message)) {
$this->apiReturn('400', '参数错误');
}
$res = array();
$res['status'] = $status;
$res['message'] = $message;
$res['data'] = $data;
if (in_array($type, array('json', 'xml'))) {
$this->ajaxReturn($res, $type);
} else {
$this->ajaxReturn($res);
}
}
function ajaxReturns($data,$type='') {
if(empty($type)) $type = C('DEFAULT_AJAX_RETURN');
switch (strtoupper($type)){
case 'JSON' :
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
exit(json_encode($data));
case 'XML' :
// 返回xml格式数据
header('Content-Type:text/xml; charset=utf-8');
exit(xml_encode($data));
case 'JSONP':
// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
$handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
exit($handler.'('.json_encode($data).');');
case 'EVAL' :
// 返回可执行的js脚本
header('Content-Type:text/html; charset=utf-8');
exit($data);
default :
// 用于扩展其他返回格式数据
Hook::listen('ajax_return',$data);
}
}