php json函数在jquery中的应用

 

本文来自小屋sjolzy.cn【原创】

 

鉴于JSON的娇小性和通用性 PHP在5.2的版本之后 默认加上一组针对数据进行JSON互转的函数: 

json_encode :数据到JSON 

json_decode :JSON到PHP变量的转换 

这两个函数在使用Ajax诸如:jquery和Ext框架的时候显得尤为重要,Ext默认接受的数据就是JSON格式,而jquery如果让JSON接入之后就显得更加轻松和简洁。本文将用一个实例讨论一下PHP 的JSON数据函数在jquery中的应用。 

Jquery做为一个轻量级的Ajax框架确实显得短小而精悍,比较适合Web编程的前台页面,更加适合和PHP结合。其中jquery中有一个方法是:$.getJSON,这个用来从服务器脚本页面取得JSON格式的数据的。我们按顺序来,首先建立一个名为json.php的PHP脚本,具体程序如下: 

<?php 

//创建一个联合数组,这里我们尽量真实的模拟了一个从数据库中读取的记录 

$a=array('name'=>'dog','sex'=>'f','par'=>array('li','wang','lian')); 

$b=array('name'=>'pig','sex'=>'m','par'=>array('liv','wange','liang')); 

$array = array(0=>$a,1=>$b); 

//将数组转化为一个json数据串 

echo json_encode($array); 

?>

 

前台页面jquery代码: 

<script> 

$(document).ready(function(){ 

    $.getJSON( 

    'json.php', 

    function(data){ 

       var content="";         

       for(var i=0;i<data.length;i++){//循环读取后台的取得的JSON数据 

        content+=data[i].name; 

        var par="排挡:"; 

        for(var j=0;j<data[i].par.length;j++){//循环读取数据中的par集合 

            par+=data[i].par[j]+"、"; 

        } 

        content+=par+"<br/>"; 

      } 

    alert(content); 

    } 

   );     

}); 

</script>

 

本例在循环读取数据的时候应用了js的基本流程控制for循环方法,在jquery中也提供了一个遍历方法each,底层实现也是基于for循环的。 

但按由于json_encode json_decode两个函数是在PHP5.2之后才有的,早于此前的版本使用将会报一个找不到json_encode函数的错误!

所以为了适用性,做了一下修改:

 

/*

 * 自定义my_json_encode函数

 * @params array $arr 欲转json的数组

 */

function my_json_encode($arr){

if (!function_exists('json_encode')){

return json_encode($arr);

}else{

require_once 'lib/json.class.php';

$json = new Services_JSON();

return $json->encode($arr);

}

}

自定义一个my_json_encode函数,当php版本为5.2之前,找不到son_encode函数时,载入json.class.php类文件。使用my_json_encode等价于json_encode。(json.class.php下载地址