PHP近年来的发展给web编程界带来更多的活力和惊喜,它使得web中某些特殊功能的实现变得如此简单,以至于我总怀疑:真的是这样吗 ?
随着web2.0的发展和成熟,ajax的运用越来越广泛。Ajax配合xml通信的技术恐怕是everybody know,但是实际上很多时候我们没有必要使用xml如此强大的功能,而是使用一个小巧精悍的“玩意”JSON(参见http://www.json.org/json-zh.html)。JSON在极大的方便了web程序员的同时也减少了客户度按与服务端的通信量,提高了用户体验。。。。。。总之好处多多。
最新的PHP(PHP 5 >= 5.2.0, PECL json:1.2.0-1.2.1,http://www.php.net/manual/zh/ref.json.php) 已经支持JSON。我们可以看到有两个函数json_decode json_encode ,一般的我们只需要使用json_encode来生成即可。
例:
[codes=php] <?php
print json_encode(array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5));
?>
[/codes]
输出
[codes=php]
{"a":1,"b":2,"c":3,"d":4,"e":5}
[/codes]
由于json是javascript内置支持的,所以不需要任何扩展我们即可访问该结构。
[codes=js]
var myjson = {"a":1,"b":2,"c":3,"d":4,"e":5};
[/codes]
那么 myjsom.a 的值就为1.
来个复杂一点的
[codes=js]
var myjson = {“news”:[{“title”:”new1”, “content”:”first news”},{“title”:”new2”, “content”:”second news”}]};[/codes]
假设上面的结构描述的是两条新闻,那么我们就可以使用DOM遍历来将新闻插入到网页中,而不需要为指定的xml格式文档编写特定的代码,既增加了程序的效率,也提高了代码的可移植性(服务端)。
[codes=js]
for(i=0; i= myjson.news.length; i++)
{
alert(myjson.news[i].title);
}
[/codes]
在实际与服务器交互的过程中,当然还要注意如果只有一条记录,那么是无法遍历的,所以还需要判断返回的是否是数组形式(多条记录),这里我显式的转化返回对象为JSON对象。
[codes=js]
var myObject = eval('(' + response + ')');
html = '
//判断是否数组
if (myObject.constructor == window.Array)
{
for(i=0; i {
html += '
}
}
else
{
html += '
}
html += '
';
$('#'+id).append(html);
[/codes]
当然由于众多空间提供商的php版本没有跟上,所以很多朋友不能使用该方法来实现json代码的生成。这里有一篇文章http://gggeek.altervista.org/sw/article_20061113.html,对现有几种JSON扩展给出了比较综合的评价,大家可以参考一下。