前台通過ajax獲取后台數據,PHP如何返回中文數據


  現在經常使用Ajax調用后台php獲取后台數據,但是PHP返回的數據如果含有中文的話,Ajax會無法識別,那咋整呢,我用的是比較笨的方法,但是實用:  

  方法一:

echo urldecode(json_encode(array('status'=>'1', 'errMsg'=>urlencode('數據傳遞錯誤,請重試'))));
return;

 

  上面是之前遇到時候的解決辦法,但是我又遇到了一次,用上面的辦法不管用,用網上各種辦法也是不行,最后琢磨出第二種方法(這種方法可能只適用於這一種情況,但其他方法調不出來可以試一下這一種),

  方法二:

//show_as_table是拼接HTML代碼的方法
$tableHtml = $this->show_as_table($data);
$tableHtml = iconv('GBK', 'UTF-8', $tableHtml);
echo json_encode(array("success"=>true, "data"=>$tableHtml));die;

   方法三:用下面的兩種方式進行url轉碼

    方式一:

public function ch_json_encode($data) {
        function ch_urlencode($data) {
            if (is_array($data) || is_object($data)) {
                foreach ($data as $k => $v) {
                    if (is_scalar($v)) {
                        if (is_array($data)) {
                            $data[$k] = urlencode($v);
                        } else if (is_object($data)) {
                            $data->$k = urlencode($v);
                        }
                    } else if (is_array($data)) {
                        $data[$k] = ch_urlencode($v); //遞歸調用該函數
                    } else if (is_object($data)) {
                        $data->$k = ch_urlencode($v);
                    }
                }
            }
            return $data;
        }

        $ret = ch_urlencode($data);
        $ret = json_encode($ret);
        return urldecode($ret);
    }

    方式二:其實是方式一的不同寫法

  public function arrayRecursive(&$array, $function='urlencode', $apply_to_keys_also = false){
        foreach ($array as $key => $value) {
            if (is_array($value)) {
                $this->arrayRecursive($array[$key], $function, $apply_to_keys_also);
            }else{
                $array[$key] = $function($value);
            }
            if ($apply_to_keys_also && is_string($key)) {
                $new_key = $function($key);
                if ($new_key != $key){
                    $array[$new_key] = $array[$key];
                    unset($array[$key]);
                }
            }
        }
    }
    public function JSON($array){
        $this->arrayRecursive($array, 'urlencode', true);
        $json = json_encode($array);
        return urldecode($json);
    }

   大家可以參考一下!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM