zoukankan      html  css  js  c++  java
  • thinkphp 前后版本ajaxReturn方法的分别

    之前用的是thinkphp2的版本现在改到thinkphp3.2已上的版本,发现ajaxReturn这个方法返回的数据不一样了,现在做下记录

    thinkphp2的ajaxReturn的实现原码

    protected function ajaxReturn($data,$info='',$status=1,$type='')
        {
            // 保证AJAX返回后也能保存日志
            if(C('LOG_RECORD')) Log::save();
            $result  =  array();
            $result['status']  =  $status;
            $result['info'] =  $info;
            $result['data'] = $data;
            if(empty($type)) $type  =   C('DEFAULT_AJAX_RETURN');
            if(strtoupper($type)=='JSON') {
                // 返回JSON数据格式到客户端 包含状态信息
                header("Content-Type:text/html; charset=utf-8");
                exit(json_encode($result));
            }elseif(strtoupper($type)=='XML'){
                // 返回xml格式数据
                header("Content-Type:text/xml; charset=utf-8");
                exit(xml_encode($result));
            }elseif(strtoupper($type)=='EVAL'){
                // 返回可执行的js脚本
                header("Content-Type:text/html; charset=utf-8");
                exit($data);
            }else{
                // TODO 增加其它格式
            }
        }

    下面贴出来的是thinkphp3.2的ajaxReturn的代码

    protected function ajaxReturn($data,$type='') {
            if(empty($type)) $type  =   C('DEFAULT_AJAX_RETURN');
            switch (strtoupper($type)){
                case 'JSON' :
                    // 返回JSON数据格式到客户端 包含状态信息
                    header('Content-Type:application/json; charset=utf-8');
                    exit(json_encode($data));
                case 'XML'  :
                    // 返回xml格式数据
                    header('Content-Type:text/xml; charset=utf-8');
                    exit(xml_encode($data));
                case 'JSONP':
                    // 返回JSON数据格式到客户端 包含状态信息
                    header('Content-Type:application/json; charset=utf-8');
                    $handler  =   isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
                    exit($handler.'('.json_encode($data).');');  
                case 'EVAL' :
                    // 返回可执行的js脚本
                    header('Content-Type:text/html; charset=utf-8');
                    exit($data);            
                default     :
                    // 用于扩展其他返回格式数据
                    Hook::listen('ajax_return',$data);
            }
        }

    最终2.0版本的ajaxReturn返回的是字符类的数据,我用jQuery.parseJSON()这个方法在前端将字符数据转化成json格式的,这个数据还多带两个值

    $info='',$status=1,这两个是默认返回的
    3.2版本的ajaxReturn 返回的直接就只有json的数据也不用做什么转化,直接就能用

    有何不足谢谢大家提出,指点
  • 相关阅读:
    无法重用Linq2Entity Query
    The Joel Test
    MSBuilder directly instead of default VSComplie with keyborad shotcut 原创
    客户端缓存(Client Cache)
    关于代码重构和UT的一些想法,求砖头
    ExtJS2.0实用简明教程 应用ExtJS
    Perl information,doc,module document and FAQ.
    使用 ConTest 进行多线程单元测试 为什么并行测试很困难以及如何使用 ConTest 辅助测试
    史上最简单的Hibernate入门简介
    汽车常识全面介绍 传动系统
  • 原文地址:https://www.cnblogs.com/IssacQQ/p/4254608.html
Copyright © 2011-2022 走看看