thinkphp中AJAX返回ajaxReturn()方法分析

 1 本文分析了thinkphp中AJAX返回ajaxReturn()方法。分享给大家供大家参考,具体如下:
 2 系统支持任何的AJAX类库,Action类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端。并且支持JSON、XML和EVAL三种方式给客户端接受数据,通过配置DEFAULT_AJAX_RETURN进行设置,默认配置采用JSON格式返回数据,在选择不同的AJAX类库的时候可以使用不同的方式返回数据。
 3 要使用ThinkPHP的ajaxReturn方法返回数据的话,需要遵守一定的返回数据的格式规范。ThinkPHP返回的数据格式包括:
 4 status 操作状态
 5 info 提示信息
 6 data 返回数据
 7 $this->ajaxReturn(返回数据,提示信息,操作状态);
 8
 9 返回数据data可以支持字符串、数字和数组、对象,返回客户端的时候根据不同的返回格式进行编码后传输。如果是JSON格式,会自动编码成JSON字符串,如果是XML方式,会自动编码成XML字符串,如果是EVAL方式的话,只会输出字符串data数据,并且忽略status和info信息。
10 下面是一个简单的例子:
11 $User=M("User");//实例化User对象
12 $result = $User->add($data);
13 if ($result){
14   //成功后返回客户端新增的用户ID,并返回提示信息和操作状态
15   $this->ajaxReturn($result,"新增成功!",1);
16 }else{
17   //错误后返回错误的操作状态和提示信息
18   $this->ajaxReturn(0,"新增错误!",0);
19 }
20
21 $data[‘status‘] = 1;
22 $data[‘info‘] = ‘info‘;
23 $data[‘size‘] = 9;
24 $data[‘url‘] = $url;
25 $this->ajaxReturn($data,‘JSON‘);
26
27 thinkphp源代码:
28 /**
29 * Ajax方式返回数据到客户端
30 * @access protected
31 * @param mixed $data 要返回的数据
32 * @param String $type AJAX返回数据格式
33 * @return void
34 */
35 protected function ajaxReturn($data,$type=‘‘) {
36     if(func_num_args()>2) {// 兼容3.0之前用法
37       $args      =  func_get_args();
38       array_shift($args);
39       $info      =  array();
40       $info[‘data‘]  =  $data;
41       $info[‘info‘]  =  array_shift($args);
42       $info[‘status‘] =  array_shift($args);
43       $data      =  $info;
44       $type      =  $args?array_shift($args):‘‘;
45     }
46     if(empty($type)) $type =  C(‘DEFAULT_AJAX_RETURN‘);
47     if(strtoupper($type)==‘JSON‘) {
48       // 返回JSON数据格式到客户端 包含状态信息
49       header(‘Content-Type:text/html; charset=utf-8‘);
50       exit(json_encode($data));
51     }elseif(strtoupper($type)==‘XML‘){
52       // 返回xml格式数据
53       header(‘Content-Type:text/xml; charset=utf-8‘);
54       exit(xml_encode($data));
55     }elseif(strtoupper($type)==‘EVAL‘){
56       // 返回可执行的js脚本
57       header(‘Content-Type:text/html; charset=utf-8‘);
58       exit($data);
59     }else{
60       // TODO 增加其它格式
61     }
62 }

原文地址:https://www.cnblogs.com/ysx215/p/8335080.html

时间: 2024-11-20 19:44:29

thinkphp中AJAX返回ajaxReturn()方法分析的相关文章

IE浏览器中 $.ajax返回uindefined 其他浏览器正常

怎么解决IE浏览器中ajax返回undefined问题_JavaScript教程_B5教程网 出现这样的问题,是因为文件保存编码和页面显示编码不一至造成的.各种浏览器,没有统一的规范,特别是IE,做浏览器兼容时,是比较郁闷的.下面模拟一下这个问题. 1,test.php采用gbk或者gb2312编码 <?php  header("content-Type: text/html; charset=utf8");//设置页面显示为utf8  echo "aaa";

webform中 ajax调用后台方法(非webservice)

后台: public partial class Ajax_ShoppingCart : System.Web.UI.Page { bookdbDataContext bdc = Connect.bookdb(); protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { if(Request.Form["method"]!=null) { switch (Request.Form["me

C#中DataTable删除行的方法分析

本文实例讲述了C#中DataTable删除行的方法,分享给大家供大家参考之用.具体实现方法如下: 自己的删除例子(drTemp是表,gvSummary是dev 的gridview.单击右键点击grid删除): 1.dtTemp.Rows.RemoveAt(gvSummary.FocusedRowHandle); 2.dtTemp.Rows[gvSummary.FocusedRowHandle].Delete();  dtTemp.AcceptChanges(); 在C#中,如果要删除DataTa

Asp.net中ajax调用后台方法

这个当然不用说大家都知道的一种就是ajax调后台的方法.1.有参数的方法调用示例代码如下:前台jQuery代码:$(function() {  这个当然不用说大家都知道的一种就是ajax调后台的方法. 1.有参数的方法调用 示例代码如下: 前台jQuery代码: $(function() {   var browers = browersEstimate();   var params = '{browersType:"' + browers + '"}';   $.ajax({   

Vue中ajax返回的结果赋值

这是第二次在项目中遇到此问题,ajax请求成功后在success函数中为Vue实例data里的变量赋值,却失败了 new Vue({ el:'#app', data:{ msg:'' }, created:function(){ $.ajax({ url:'', data:'', dataType:'json', success:function(res){ this.msg = res.data; } }) } }) 原因在于在ajax的success函数中,this的指向不再是vue的实例

ThinkPHP中add()方法的返回值

在处理业务数据的时候,有时会遇到需要取得刚insert的数据的主键id值. 以前的做法都是先插入数据后,再通过查询获得id值. 后来在学习ThinkPHP开发的时候才知道,add()方法在写入成功后得返回值就是新增数据的主键值. 减少了代码量.

【转】解决spring mvc 中ajax返回json乱码问题

转载自:http://my.oschina.net/u/140421/blog/176625 转载自:http://my.oschina.net/candon/blog/149073?fromerr=I9VBOy62 第一个转载: 在使用spring-mvc的mvc的时候既享受它带来的便捷,又头痛它的一些问题,比如经典的中文乱码问题.现在是用json作为客户端和服务端 的数据交换格式貌似很流行,但是在springmvc中有时候会因为我们的各种疏忽从而造成页面ajax请求到的相应数据,如果带有中文

thinkphp中ajax用户名校验

ajax实在是太神奇了,刚刚接触,不足之处,请大家指正. 采用Ajax方式进行页面无刷新提示,来检测用户名是否存在. 搭建一个thinkphp的环境,在index.html中,ajax代码如下: <script type="text/javascript"> function checknickname(){ //① 抓取被校验的用户名信息 var nickname = document.getElementById("usernickname").va

thinkphp 中 ajax的使用

前台页面: 两种写法都可以: (1) // var ajaxurl = "{:U('Index/postDomain?ajax=1')}";   // 这样写也行   $.ajax({ // url: "/index.php/Home/Index/postDomain/ajax/1" ,  // 这样写也行                // url: ajaxurl ,                url: "{:U('Index/postDomain