json_encode替代函數

文章來源:http://www.kaifadi.com/php/288.html

大家都知道PHP裏有一個很好用的JSON函數,json_encode,但是這個函數只有PHP5.2以上版本才支持,如果服務器版本是5.2以下版本的話無法使用,傳統方法是手動拼接字符,然後前端eval,但是這種處理方法效率低,而且麻煩,可以考慮使用如下函數代替json_encode,經過本人測試,絕對好用!但是前端需要多加一道解碼函數decodeURI或decodeURIComponent等進行解碼!具體替代函數代碼,請參考:

後臺替代函數:jsonEncode(此函數爲他人所寫,在此只是調用演示)

<?php

function jsonEncode($var) {
    if (function_exists('json_encode')) {
        return json_encode($var);
    } else {
        switch (gettype($var)) {
            case 'boolean':
                return $var ? 'true' : 'false'; // Lowercase necessary!
            case 'integer':
            case 'double':
                return $var;
            case 'resource':
            case 'string':
                return '"'. str_replace(array("\r", "\n", "<", ">", "&"),
                    array('\r', '\n', '\x3c', '\x3e', '\x26'),
                    addslashes($var)) .'"';
            case 'array':
                // Arrays in JSON can't be associative. If the array is empty or if it
                // has sequential whole number keys starting with 0, it's not associative
                // so we can go ahead and convert it as an array.
                if (empty ($var) || array_keys($var) === range(0, sizeof($var) - 1)) {
                    $output = array();
                    foreach ($var as $v) {
                        $output[] = jsonEncode($v);
                    }
                    return '[ '. implode(', ', $output) .' ]';
                }
                // Otherwise, fall through to convert the array as an object.
            case 'object':
                $output = array();
                foreach ($var as $k => $v) {
                    $output[] = jsonEncode(strval($k)) .': '. jsonEncode($v);
                }
                return '{ '. implode(', ', $output) .' }';
            default:
                return 'null';
        }
    }

}

$arr=array('name'=>'CSDN論壇','degree'=>'numberone');

echo jsonEncode($arr);

?>


前端調用:以$.ajax爲例:

 

$.ajax(

    url:'後臺php文件名',

    type:'GET',

    dataType:'json',

   success:function(data){

     decodeURI(data.name);//如果PHP爲5.2以上版本,這裏可以不用加decodeURI解碼,但是5.2以下必須加。區別於此,請注意!

  }
如果使用上遇到問題,可以和我聯繫!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章