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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
PHP入门
Oct 09 PHP
php中json_encode中文编码问题分析
Sep 13 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
php数组中包含中文的排序方法
Jun 03 PHP
php数组添加元素方法小结
Dec 20 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
PHP自定义函数格式化json数据示例
Sep 14 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
PHP中__set()实例用法和基础讲解
Jul 23 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中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
跟老齐学Python之Import 模块
2014/10/13 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
python 调试冷知识(小结)
2019/11/11 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
大学四年职业生涯规划书范文
2014/01/02 职场文书
参观考察邀请函范文
2014/01/29 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
商务经理岗位职责
2014/08/03 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
单位介绍信格式范文
2015/05/04 职场文书
Pytest中skip和skipif的具体使用方法
2021/06/30 Python
pandas求平均数和中位数的方法实例
2021/08/04 Python
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL
Web应用开发TypeScript使用详解
2022/05/25 Javascript