thinkphp中AJAX返回ajaxReturn()方法分析


Posted in PHP onDecember 06, 2016

本文分析了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 增加其它格式
    }
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP实现验证码功能
Oct 09 PHP
让你的PHP同时支持GIF、png、JPEG
Oct 09 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 PHP
php引用传值实例详解学习
Nov 06 PHP
测试php函数的方法
Nov 13 PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
PHP 年月日的三级联动实例代码
May 24 PHP
阿里云PHP SMS短信服务验证码发送方法
Jul 11 PHP
PHP面向对象类型约束用法分析
Jun 12 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 PHP
php中引用符号(&)的使用详细介绍
Dec 06 #PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 #PHP
thinkPHP自动验证机制详解
Dec 05 #PHP
thinkPHP中_initialize方法实例分析
Dec 05 #PHP
php版微信自定义回复功能示例
Dec 05 #PHP
thinkPHP中配置的读取与C方法详解
Dec 05 #PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
Dec 05 #PHP
You might like
PHP中删除变量时unset()和null的区别分析
2011/01/27 PHP
PHP同时连接多个mysql数据库示例代码
2014/03/17 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
2007/11/30 Javascript
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
python调用cmd命令行制作刷博器
2014/01/13 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
基于Python的接口测试框架实例
2016/11/04 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
Python全排列操作实例分析
2018/07/24 Python
详解python 注释、变量、类型
2018/08/10 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
深入了解Python 方法之类方法 & 静态方法
2020/08/17 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
微笑面对生活演讲稿
2014/05/13 职场文书
家庭困难证明
2014/10/12 职场文书
消费者投诉书范文
2015/07/02 职场文书