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 相关文章推荐
模拟flock实现文件锁定
Feb 14 PHP
PHP form 表单传参明细研究
Jul 17 PHP
PHP Socket 编程
Apr 09 PHP
php分页函数完整实例代码
Sep 22 PHP
PHP-Java-Bridge使用笔记
Sep 22 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
再谈PHP中单双引号的区别详解
Jun 12 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 PHP
php实现登录页面的简单实例
Sep 29 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 PHP
详解将数据从Laravel传送到vue的四种方式
Oct 16 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 编程的 5个良好习惯
2009/02/20 PHP
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
CodeIgniter生成网站sitemap地图的方法
2013/11/13 PHP
php计算整个目录大小的方法
2015/06/19 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
javascript 回调函数详解
2014/11/11 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
seajs中模块依赖的加载处理实例分析
2017/10/10 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
python和flask中返回JSON数据的方法
2018/03/26 Python
python tkinter窗口最大化的实现
2019/07/15 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
Django-migrate报错问题解决方案
2020/04/21 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
医学生自我评价
2014/01/27 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
母亲节感恩寄语
2014/02/21 职场文书
检讨书1000字
2014/10/11 职场文书
2014年工程工作总结
2014/11/25 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
获奖感言一句话
2015/07/31 职场文书
话题作文之呼唤
2019/12/18 职场文书