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

有何不足谢谢大家提出,指点

你可能感兴趣的:(thinkphp)