首页 > 代码库 > thinkphp 前后版本ajaxReturn方法的分别

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 前后版本ajaxReturn方法的分别