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的数据也不用做什么转化,直接就能用

    有何不足谢谢大家提出,指点
  • 相关阅读:
    注意 定义类的时候 不要null 别忘了new 实例化 否则报错
    如果通过key获取dictionary里面的value
    C#邮箱身份验证
    时间选择器 可以选择日期和时间
    C#的Timer解析
    使用微软的组件发邮件
    将html代码写入临时文件夹下面的 然后发来给webbrowser使用
    c#中DataGridView 如何设置 才能选中一行 设置鼠标事件
    lumisoft 获取邮件的方法
    C# 动态添加CheckedListBox的选项,并设置选项为 选中? 怎么做?
  • 原文地址:https://www.cnblogs.com/IssacQQ/p/4254608.html
Copyright © 2011-2022 走看看