视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ajaxreturn是php内置方法吗
2020-11-03 13:37:35 责编:小采
文档

ajaxReturn是php内置方法吗

ajaxReturn不是php内置方法,ajaxReturn是ThinkPHP中的Action类提供了ajaxReturn方法,用于AJAX调用后返回数据给客户端,并且支持JSON、XML和EVAL三种方式给客户端接受数据,通过配置DEFAULT_AJAX_RETURN进行设置,默认配置采用JSON格式返回数据,在选择不同的AJAX类库的时候可以使用不同的方式返回数据。

ajaxReturn使用

要使用ThinkPHP的ajaxReturn方法返回数据的话,需要遵守一定的返回数据的格式规范。ThinkPHP返回的数据格式包括:

status 操作状态
info 提示信息
data 返回数据

$this->ajaxReturn(返回数据,提示信息,操作状态);

返回数据data可以支持字符串、数字和数组、对象,返回客户端的时候根据不同的返回格式进行编码后传输。如果是JSON格式,会自动编码成JSON字符串,如果是XML方式,会自动编码成XML字符串,如果是EVAL方式的话,只会输出字符串data数据,并且忽略status和info信息。

下面是一个简单的例子:

$User=M("User");//实例化User对象
$result = $User->add($data);
if ($result){
 //成功后返回客户端新增的用户ID,并返回提示信息和操作状态
 $this->ajaxReturn($result,"新增成功!",1);
}else{
 //错误后返回错误的操作状态和提示信息
 $this->ajaxReturn(0,"新增错误!",0);
}
$data['status'] = 1;
$data['info'] = 'info';
$data['size'] = 9;
$data['url'] = $url;
$this->ajaxReturn($data,'JSON');

ajaxReturn源码

/**
* Ajax方式返回数据到客户端
* @access protected
* @param mixed $data 要返回的数据
* @param String $type AJAX返回数据格式
* @return void
*/
protected function ajaxReturn($data,$type='') {
 if(func_num_args()>2) {// 兼容3.0之前用法
 $args = func_get_args();
 array_shift($args);
 $info = array();
 $info['data'] = $data;
 $info['info'] = array_shift($args);
 $info['status'] = array_shift($args);
 $data = $info;
 $type = $args?array_shift($args):'';
 }
 if(empty($type)) $type = C('DEFAULT_AJAX_RETURN');
 if(strtoupper($type)=='JSON') {
 // 返回JSON数据格式到客户端 包含状态信息
 header('Content-Type:text/html; charset=utf-8');
 exit(json_encode($data));
 }elseif(strtoupper($type)=='XML'){
 // 返回xml格式数据
 header('Content-Type:text/xml; charset=utf-8');
 exit(xml_encode($data));
 }elseif(strtoupper($type)=='EVAL'){
 // 返回可执行的js脚本
 header('Content-Type:text/html; charset=utf-8');
 exit($data);
 }else{
 // TODO 增加其它格式
 }
}

下载本文
显示全文
专题