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 VS ASP
Oct 09 PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
php+ajax实现的点击浏览量加1
Apr 16 PHP
PHP编译安装时常见错误解决办法
May 28 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
Nov 14 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
RSA实现JS前端加密与PHP后端解密功能示例
Aug 05 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(1)
2006/10/09 PHP
php 处理上百万条的数据库如何提高处理查询速度
2010/02/08 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
2019/04/10 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
python解析中国天气网的天气数据
2014/03/21 Python
Python性能提升之延迟初始化
2016/12/04 Python
详解Python的三种可变参数
2019/05/08 Python
python 标准差计算的实现(std)
2019/07/29 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
python和JavaScript哪个容易上手
2020/06/23 Python
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
顶岗实习计划书
2014/01/10 职场文书
黄河的主人教学反思
2014/02/07 职场文书
保护环境建议书100字
2014/05/13 职场文书
安全标兵事迹材料
2014/08/17 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL
mysql中关键词exists的用法实例详解
2022/06/10 MySQL