
常用软件类: |
|杀毒安全 | |联络聊天 | |网络软件 | |多媒体类 | |系统工具 | |图形图像 | |系统工具 | |应用软件 | |行业软件 |
开发设计类: |
|动画制作 | |图像处理 | |3D设计 | |操作系统 | |站长学院 | |网络相关 | |WEB设计 | |数据库类 | |程序开发 |
基于JSON的高级AJAX开发技术
提要 本文将解释如何使用AJAX和JSON分析器在客户端和服务器之间创建复杂的JSON数据传输层。
一、 引言
毫无疑问,AJAX已经成为当今Web开发中一种强有力的用户交互技术,但是它的许多可能性应用仍然鲜为人知。在本文中,我们将来共同探讨如何使用JavaScript对象标志(JSON)和JSON分析器在服务器和客户端AJAX引擎之间创建复杂而强有力的JSON数据传输层。我们将详细讨论如何创建一组对象(在其它语言中经常被当作一个包),如何把这些对象串行化为JSON以发送到服务器端,以及如何把服务器端JSON反串行化为客户端JavaScript对象。
提示】你可以在Douglas Crockford的网站上找到本文中使用的JSON分析器。
在继续阅读前,本文假定你已经掌握了JavaScript技术并且了解如何创建一个基本的AJAX引擎,并经由AJAX技术向服务器端发出请求和从服务器端接收响应。为了更好地理解本文中示例,你需要下载本文相应的源码文件。
二、 开始
为了进一步抽象我们的AJAX请求并有助于我们以后在不同的应用程序间共享AJAX引擎代码,本文使用了一个我自己创建的AJAX引擎。为了使用这个引擎,我们简单地导入三个JavaScript文件并且向一个名为AjaxUpdater的对象发出请求。然后,由该引擎来负责处理其它任务,包括把响应代理到在该请求中指定的回调方法中。下面的示例展示了我们如何使用这个引擎发出请求以及导入相关的文件:
| <script type="text/javascript"src="javascript/model/Ajax.js"></script> <script type="text/javascript" src="javascript/model/HTTP.js"></script> <script type="text/javascript" src="javascript/model/AjaxUpdater.js"></script> <script type="text/javascript"> document.load = AjaxUpdater.Update(’GET’, URL, callback); </script> |
| var Auto = new Object(); |
| Auto.Car = new Object(); Auto.Car.color = "#fff"; Auto.Car.setColor = function(_color) { Auto.Car.color = _color; } Auto.Car.setColor("#333"); |
| Auto.Car.Wheel = new Object(); Auto.Car.Wheel.color = "#000"; |
| <script type="text/javascript" src="javascript/utils/jsonparser.js"></script> |
| <script type="text/javascript" src="javascript/Auto.js"></script> <script type="text/javascript" src="javascript/Car.js"></script> <script type="text/javascript" src="javascript/Wheel.js"></script> <script type="text/javascript" src="javascript/utils/jsonparser.js"></script> <script type="text/javascript" src="javascript/model/Ajax.js"></script> <script type="text/javascript" src="javascript/model/HTTP.js"></script> <script type="text/javascript" src="javascript/model/AjaxUpdater.js"></script> |
| <div id="loading"></div> <div id="body"></div> |
| <body onload="document.getElementById(’body’).innerHTML = ’<b>Local objects serialized as JSON</b><br/>Auto Object: ’+ Auto.toJSONString();"> |
| {"Car":{"color":"#333","Wheel":{"color":"#000"}}} |
| <a href="javascript:AjaxUpdater.Update(’GET’, ’json/data.js’, displayResponse);">Get remote JSON</a> |
| <script type="text/javascript"> function displayResponse() { if(Ajax.checkReadyState(’loading’) == "OK") { var Auto = Ajax.request.responseText.parseJSON(); document.getElementById("body").innerHTML += "<br/><b>Remote JSON unserialized</b>"; document.getElementById("body").innerHTML += "<br/>Car color: "+Auto.Car.color; document.getElementById("body").innerHTML += "<br/>Wheel color: "+Auto.Car.Wheel.color; } } </script> |