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垃圾代码优化操作代码
Aug 05 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
PHP内置的Math函数效率测试
Dec 01 PHP
PHP实现Javascript中的escape及unescape函数代码分享
Feb 10 PHP
php实现的用户查询类实例
Jun 18 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
Oct 27 PHP
PHP 网站修改默认访问文件的nginx配置
May 27 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
实例说明js脚本语言和php脚本语言的区别
Apr 04 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
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
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
基于php-fpm的配置详解
2013/06/03 PHP
PHP实现简易blog的制作
2016/10/24 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
js中将具有数字属性名的对象转换为数组
2011/03/06 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
AngularJS实现注册表单验证功能
2017/10/16 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
详解python3中zipfile模块用法
2018/06/18 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
使用Python封装excel操作指南
2021/01/29 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
初一地理教学反思
2014/01/16 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
消防安全管理制度
2014/02/01 职场文书
校庆口号
2014/06/20 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
追悼会悼词大全
2015/06/23 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
高二化学教学反思
2016/02/22 职场文书
八年级语文教学反思
2016/03/03 职场文书