开发者社区> 桃子红了呐> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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 增加其它格式
        }
    }



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
jQuery Ajax 简单的实现跨域请求
jQuery Ajax 简单的实现跨域请求
127 0
Jquery ajax参数设置
参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址。 type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。
648 0
使用Ajax和Jquery实现GridView的展开、合并
需求简介:电子商务网站中,查询会员的订单,点击“會員”,展现此会员的订单列表。Demo   界面操作:   Step 1 展现会员列表,如下图 Step 2 点击“某一会员”行 展现会员订单列表    实现思路: 1、  使用用户控件(CustomerOrders.
725 0
[原创]jPagerBar1.2发布-jquery分页插件(一个适合Ajax+JSON+jQuery环境使用的多功能页码栏插件)(Demo、源文件下载已更新)
18个月前发布了jPagerBar1.1.1,受到了很多网友的关心和支持,也收到了很多的意见反馈,在此表示感谢!最近腾出点时间将一些建议整理了一下,结合自己的使用体验,升级了jPagerBar的一部分功能和执行方式。
956 0
Jquery Ajax WebService
仅供参考 ws.aspx 代码                $.ajax({                    type: "POST",   //访问WebService使用Post方式请求                    contentType: "application/js...
759 0
asp.net AJAX 验证用户名是否存在 -Jquery
异步刷新实现方式有多种,也可以借助JS的多种框架,下面是使用JQuery框架实现的AJAX 验证用户名是否存在 jQuery.ajax概述 HTTP 请求加载远程数据。   通过jQuery 底层 AJAX 实现。
979 0
jQuery使用手册之Ajax支持(8)
$.ajax(prop)    通过一个ajax请求,回去远程数据,prop是一个hash表,它可以传递的key/value有以下几种。          (String)type:数据传递方式(get或post)。
719 0
jQuery起点教程之使用AJAX(4)
在这一部分我们写了一个小小的AJAX应用,它能够rate一些东西(译Keel注:就是对某些东西投票),就像在youtube.com上面看到的一样。 首先我们需要一些服务器端代码,这个例子中用到了一个PHP文件,读取rating参数然后返回rating总数和平均数。
874 0
使用 jQuery 简化 Ajax 开发
级别: 中级 Jesse Skinner, Web 开发人员, Freelance 2007 年 5 月 16 日 jQuery 是一个JavaScript 库,它有助于简化 JavaScript™ 以及 Asynchronous JavaScript + XML (Ajax) 编程。
1004 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载