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 相关文章推荐
对Session和Cookie的区分与解释
Mar 16 PHP
table标签的结构与合并单元格的实现方法
Jul 24 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
May 12 PHP
摘自织梦CMS中的图片处理类
Aug 08 PHP
php创建无限级树型菜单
Nov 05 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
PHP中类的自动加载的方法
Mar 17 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
PHP 8新特性简介
Aug 18 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入门源程序
2006/10/09 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
js 函数调用模式小结
2011/12/26 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
vue实现购物车功能(商品分类)
2020/04/20 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
Python AES加密模块用法分析
2017/05/22 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
幼儿园教师辞职信
2014/01/18 职场文书
大学生求职计划书
2014/04/30 职场文书
汽修专业自荐信
2014/07/07 职场文书
民族精神月活动总结
2014/08/28 职场文书
出差报告格式模板
2014/11/06 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android