json_encode数据到JSON
json_decode JSON到PHP变量的转换
这两个PHP JSON互转函数在使用Ajax诸如:jquery和Ext框架的时候显得尤为重要,Ext默认接受的数据就是JSON格式,而jquery如果让JSON接入之后就显得更加轻松和简洁。本文将用一个实例讨论一下PHP 的JSON数据函数在jquery中的应用。
Jquery做为一个轻量级的Ajax框架确实显得短小而精悍,比较适合Web编程的前台页面,更加适合和PHP结合。其中jquery中有一个方法是:$.getJSON,这个用来从服务器脚本页面取得JSON格式的数据的。我们按顺序来,首先建立一个名为json.php的PHP脚本,具体程序如下:
<ol class="dp-xml"> <li class="alt"><span><span> </span><span class="tag"><span> ?php </span></span></span></li> <li><span>//创建一个联合数组,这里我们尽量真<br>实的模拟了一个从数据库中读取的记录 </span></li> <li class="alt"> <span>$</span><span class="attribute">a</span><span>=</span><span class="attribute-value">array</span><span>('name'=</span><span class="tag">></span><span>'dog','sex'=</span><span class="tag">><br></span><span>'f','par'=</span><span class="tag">></span><span>array('li','wang','lian')); </span> </li> <li> <span>$</span><span class="attribute">b</span><span>=</span><span class="attribute-value">array</span><span>('name'=</span><span class="tag">></span><span>'pig','sex'=</span><span class="tag">><br></span><span>'m','par'=</span><span class="tag">></span><span>array('liv','wange','liang')); </span> </li> <li class="alt"> <span>$</span><span class="attribute">array</span><span class="attribute-value">array</span><span> = array(</span><span class="attribute">0</span><span>=</span><span class="tag">></span><span>$a,</span><span class="attribute">1</span><span>=</span><span class="tag">></span><span>$b); </span> </li> <li><span>//将数组转化为一个json数据串 </span></li> <li class="alt"><span>echo json_encode($array); </span></li> <li> <span class="tag">?></span><span> </span> </li> </ol>
前台页面jquery代码:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><span> </span><span class="tag-name">script</span><span class="tag">></span><span> </span></span></span></li> <li><span>$(document).ready(function(){ </span></li> <li class="alt"><span>$.getJSON( </span></li> <li><span>'json.php', </span></li> <li class="alt"><span>function(data){ </span></li> <li> <span>var </span><span class="attribute">content</span><span>=</span><span class="attribute-value">""</span><span>; </span> </li> <li class="alt"> <span>for(var </span><span class="attribute">i</span><span>=</span><span class="attribute-value">0</span><span>;i</span><span class="tag"><span class="tag-name">data.length</span><span>;i++)<br>{//循环读取后台的取得的JSON数据 </span></span> </li> <li><span>content+=data[i].name; </span></li> <li class="alt"> <span>var </span><span class="attribute">par</span><span>=</span><span class="attribute-value">"排挡:"</span><span>; </span> </li> <li> <span>for(var </span><span class="attribute">j</span><span>=</span><span class="attribute-value">0</span><span>;j</span><span class="tag"><span class="tag-name">data</span><span>[i].par.<br>length;j++){//循环读取数据中的par集合 </span></span> </li> <li class="alt"><span>par+=data[i].par[j]+"、"; </span></li> <li><span>} </span></li> <li class="alt"> <span>content+=par+"</span><span class="tag"><span class="tag-name">br</span><span class="tag">/></span><span>"; </span></span> </li> <li><span>} </span></li> <li class="alt"><span>alert(content); </span></li> <li><span>} </span></li> <li class="alt"><span>); </span></li> <li><span>}); </span></li> <li class="alt"><span class="tag"><span> /script</span><span class="tag">></span><span> </span></span></li> </ol>
本例在循环读取数据的时候应用了js的基本流程控制for循环方法,在jquery中也提供了一个遍历方法each有兴趣的兄弟们可以自己了解一下这个方法,底层实现也是基于for循环的。
注意:json_encode json_decode两个PHP JSON互转函数是在PHP5.2之后才有的,早于此前的版本使用将会报一个找不到函数的错误!