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 设置MySQL连接字符集的方法
Jan 02 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
PHP遍历目录并返回统计目录大小
Jun 09 PHP
php的闭包(Closure)匿名函数详解
Feb 22 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 PHP
非常有用的9个PHP代码片段
Apr 06 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
PHP更安全的密码加密机制Bcrypt详解
Jun 18 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
Jul 03 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 09 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操作数组的一些函数整理介绍
2011/07/17 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
javascript 框架小结 个人工作经验
2009/06/13 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
vue组件的写法汇总
2018/04/12 Javascript
微信小程序表单验证form提交错误提示效果
2020/06/19 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
详解Python设计模式之策略模式
2020/06/15 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
《愚公移山》教学反思
2014/02/20 职场文书
小学生秋游活动方案
2014/02/23 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
歌唱比赛主持词
2014/03/18 职场文书
2014年实习期工作总结
2014/11/27 职场文书
督导岗位职责
2015/02/04 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
python如何利用traceback获取详细的异常信息
2021/06/05 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python