AJAX这个词语已经火爆一阵了,这个词语中的X就是表示XML,也就是我们通常使用的服务器端和客户端进行交互的数据传输介质。当然XML有着开放、平台无关性等当前我们很注重的几个方面的优势,而且无论在哪个方面都可以灵活的应用,甚至数据库都有采用XML的了(比如SQLSERVER和ORACLE等)。
当然,有优势并不一定代表在所有方面都OK,JSON-JavaScript Object Notation,一个也是最近比较流行的数据表示工具,在AJAX框架(比如DOJO等)中都有所应用,最近我也在我的权限系统中大量的使用了JSON作为前台JS和服务器进行数据库交互的平台。先看一个简单的例子:
比如我要从服务器端返回数据(2个属性,success和message,表示执行成功与否和返回的提示信息),那么使用XML就是如下表示:
<?xml version="1.0" encoding="GBK"?>
<Root>
<success>true</success>
<message><![CDATA[操作成功!]]></message>
</Root>
那么我们在客户端使用JS就应该如此来获取数据了,如下:
function(xmlHttp)
{
var xml = xmlHttp.responseXML; // 获取服务器端返回的XML数据流
var success = xml.getElementsByTagName("success")[0].firstChild.nodeValue;
var message = xml.getElementsByTagName("message")[0].firstChild.nodeValue;
……
}
我先不评论这两个代码,我们再看使用JSON如何表示,首先,在服务器端我们返回的字符串表示如下:
{"success":true,"message":"操作成功!"}
那么我们在客户端又该如何进行解析呢?看如下代码:
function(xmlHttp)
{
var val = xmlHttp.responseText; // 获取服务器端返回的文本流
var obj = eval('(' + val + ')'); // 利用eval函数将返回的文本流转换成JS对象
alert(obj.success); // 打印是否成功
alert(obj.message); // 打印服务器端返回的信息
}
看完上面的代码后,大家有什么想法呢?呵呵,是不是觉得第一种表示又简单,又直观呢?!而且从代码的量上看,使用JSON可以明显的减少客户端的JS编程量,而且在同等的数据要求下,JSON的表示法肯定是要比XML表示法的字节数要少(上面XML分别是108个字符,JSON是34个字符),可以看到差别是明显的,尤其是要表示的数据结构更加复杂和多的时候。
大家对JSON也有了初步的了解,我就从实际的使用角度来给大家讲讲JSON,当然,我这里不会原原本的照搬官方网站上的介绍(官方网站地址:http://www.json.org/)和图片等资源信息,这大家可以在baidu上一搜一大片,而且也可以在官方网站上了解什么是JSON。
我这里也给大家简单的说下,怎么表示JSON对象,我们直接在JS中表示就如下:
var obj = {
"a":"a1",
"b":"b1",
"c":"c1"
}