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 相关文章推荐
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
php 什么是PEAR?(第三篇)
Mar 19 PHP
frename PHP 灵活文件命名函数 frename
Sep 09 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
php empty()与isset()区别的详细介绍
Jun 17 PHP
win7下memCache的安装过程(具体操作步骤)
Jun 28 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
PHP中的traits简单使用实例
May 13 PHP
必须收藏的php实用代码片段
Feb 02 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
Sep 03 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
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
php图片缩放实现方法
2014/02/20 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
js实现时间日期校验
2020/05/26 Javascript
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
python实现堆排序的实例讲解
2020/02/21 Python
python如何调用字典的key
2020/05/25 Python
python openssl模块安装及用法
2020/12/06 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
食品药品安全责任书
2015/05/11 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
Python IO文件管理的具体使用
2022/03/20 Python