使用JSON做AJAX的数据传输介质

2012-11-12

  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"

  }

分享到:
0
相关阅读
友情链接
© 2018 我考网 http://www.woexam.com 中国互联网举报中心 湘ICP备18023104号 京公网安备 11010802020116号
违法和不良信息举报:9447029@qq.com