thinkphp中的AJAX返回ajaxReturn()

系統支持任何的AJAX類庫,Action類提供了ajaxReturn方法用於AJAX調用後返回數據給客戶端。而且支持JSON、XML和EVAL三種方式給客戶端接受數據,經過配置DEFAULT_AJAX_RETURN進行設置,默認配置採用JSON格式返回數據,在選擇不一樣的AJAX類庫的時候能夠使用不一樣的方式返回數據。
要使用ThinkPHP的ajaxReturn方法返回數據的話,須要遵照必定的返回數據的格式規範。ThinkPHP返回的數據格式包括:php

status 操做狀態 
info 提示信息 
data 返回數據 
$this->ajaxReturn(返回數據,提示信息,操做狀態);

返回數據data能夠支持字符串、數字和數組、對象,返回客戶端的時候根據不一樣的返回格式進行編碼後傳輸。若是是JSON格式,會自動編碼成JSON字符串,若是是XML方式,會自動編碼成XML字符串,若是是EVAL方式的話,只會輸出字符串data數據,而且忽略status和info信息。html

下面是一個簡單的例子:ajax

$User=M("User");//實例化User對象
$result = $User->add($data);
if ($result){
    //成功後返回客戶端新增的用戶ID,並返回提示信息和操做狀態
    $this->ajaxReturn($result,"新增成功!",1);
}else{
    //錯誤後返回錯誤的操做狀態和提示信息
    $this->ajaxReturn(0,"新增錯誤!",0);
}
$data['status'] = 1;
$data['info'] = 'info';
$data['size'] = 9;
$data['url'] = $url;
$this->ajaxReturn($data,'JSON');

 thinkphp源代碼:thinkphp

/**
     * Ajax方式返回數據到客戶端
     * @access protected
     * @param mixed $data 要返回的數據
     * @param String $type AJAX返回數據格式
     * @return void
     */
    protected function ajaxReturn($data,$type='') {
        if(func_num_args()>2) {// 兼容3.0以前用法
            $args           =   func_get_args();
            array_shift($args);
            $info           =   array();
            $info['data']   =   $data;
            $info['info']   =   array_shift($args);
            $info['status'] =   array_shift($args);
            $data           =   $info;
            $type           =   $args?array_shift($args):'';
        }
        if(empty($type)) $type  =   C('DEFAULT_AJAX_RETURN');
        if(strtoupper($type)=='JSON') {
            // 返回JSON數據格式到客戶端 包含狀態信息
            header('Content-Type:text/html; charset=utf-8');
            exit(json_encode($data));
        }elseif(strtoupper($type)=='XML'){
            // 返回xml格式數據
            header('Content-Type:text/xml; charset=utf-8');
            exit(xml_encode($data));
        }elseif(strtoupper($type)=='EVAL'){
            // 返回可執行的js腳本
            header('Content-Type:text/html; charset=utf-8');
            exit($data);
        }else{
            // TODO 增長其它格式
        }
    }
相關文章
相關標籤/搜索