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 相关文章推荐
如何限制访问者的ip(PHPBB的代码)
Oct 09 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 PHP
PHP 获取文件权限函数介绍
Jul 11 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
PHP include任意文件或URL介绍
Apr 29 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
PHP计算日期相差天数实例分析
Feb 23 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
Jun 13 PHP
php中字符串和整数比较的操作方法
Jun 06 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
php5.2.0内存管理改进
2007/01/22 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
React快速入门教程
2017/01/17 Javascript
MUI 上拉刷新/下拉加载功能实例代码
2017/04/13 Javascript
JS如何设置元素样式的方法示例
2017/08/28 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
vue实现图片上传功能
2020/05/28 Javascript
python Opencv将图片转为字符画
2021/02/19 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
python ChainMap的使用和说明详解
2019/06/11 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
国际领先的学术出版商:Springer
2017/01/11 全球购物
先进集体获奖感言
2014/02/13 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
保证书格式范文
2014/04/28 职场文书
酒店仓管员岗位职责
2014/04/28 职场文书
推广普通话演讲稿
2014/05/23 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL