thinkphp中的AJAX返回ajaxReturn()

简介:

系统支持任何的AJAX类库,Action类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端。并且支持JSON、XML和EVAL三种方式给客户端接受数据,通过配置DEFAULT_AJAX_RETURN进行设置,默认配置采用JSON格式返回数据,在选择不同的AJAX类库的时候可以使用不同的方式返回数据。
要使用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');

 thinkphp源代码:

复制代码
/**
     * 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 增加其它格式
        }
    }



相关文章
|
前端开发 PHP 数据格式
|
前端开发 PHP JavaScript
ThinkPHP页面跳转、Ajax技巧详细介绍(十八)
原文: ThinkPHP页面跳转、Ajax技巧详细介绍(十八) ThinkPHP页面跳转、Ajax技巧详细介绍 一、页面跳转 $this->success('查询成功',U('User/test')); ├─//跳当前模块方法下:├─ $this...
1133 0
|
前端开发 JavaScript
jquery ajax return值无法获取的解决方法
大家先看一段简单的jquery ajax 返回值的js 代码: Copy to Clipboard引用的内容:[www.veryhuo.com]function getReturnAjax{ $.
808 0
|
前端开发
onsubmit 校验表单时利用 ajax 的 return false 无效问题
前几天,在校验一个表单数据时用到ajax时,遇到 return false 无效问题。/** * 表单提交校验 **/ function onSubmit(){ if($('#name').val().length
879 0
|
5月前
|
XML 前端开发 JavaScript
什么是Ajax和jquery
什么是Ajax和jquery
38 0
|
4月前
|
JSON 前端开发 Java
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
56 0