这个标题是一个小小的玩笑,但是确实道出了Ajax的含义;
Ajax不是一种新的技术,而是传统技术加以组合后的技术应用,它带给访问者完全不同的浏览感受:我们再也不需要一次又一次地在提交表单以后等待或者主动刷新网页,传统的动态网页技术被隐藏到了Ajax的后台,我们所看到的是一个静态页面,动态程序反馈的结果被直接无刷新地显示在这个页面上;
这听上去确实很像是在经历了静态页面、动态页面之后,我们又再次回到了静态页面的世界,不过这一次,已经完全不同了。
看到Ajax相关介绍之后我的第一个反应是MSN Space,我一直都对MS的Blog服务感到很奇怪,当我提交回复评论以后,浏览器会暂时停顿一下,然后在无刷新的情况下把我提交的评论显示出来;当了解了Ajax以后,我终于恍然大悟,原来如此。
有介绍说Sina-Blog也使用了Ajax,于是专门过去灌水试验了一番,确实如出一则;还有,前一段时间BlueIdea有贴出GoogleSuggest的代码研究,在不刷新页面的情况下,页面仍然可以检索、查询并返回浏览者所输入的相关结果,现在想来,果然也是Ajax应用没错。
“80s team”已经与前一段时间转载和翻译过相关的文章(可以在BXNA中检索到),但我认为非常有必要加以仔细体会和研究,因此这里再次摘录,混抄于下。
-----------------------------
Ajax(Asynchronous JavaScript + XML)的定义
* XHTML 和 CSS 的标准表示;
* 使用 DOM(Document Object Model)进行动态显示及交互;
* 使用 XML 和 XSLT 进行数据交换及相关操作;
* 使用 XMLHttpRequest 进行异步数据查询、检索;
* 使用 JavaScript 将所有的东西绑定在一起。
Ajax 能够做什么?
如今 Google Suggest 和 Google Maps 使用了 Ajax,通过 Ajax,我们可以使得客户端得到丰富的应用体验及交换操作,而用户不会感觉到有网页提交或刷新的过程,页面也不需要被重新加载,应用的数据交换都被隐藏。
传统的 WEB 应用程序模型是这样工作的:用户的界面操作触发 HTTP 请求,服务器在接收到请求之后进行一些业务逻辑处理,如保存数据等,然后向客户端返回一个 HTML 页面。
但这种方式并没有给予用户很好的应用体验,当服务器在处理数据的时候,用户则处于等待的状态,每一步操作都需要等待,太多的等待会使用户越来越没有耐心。
而 Ajax 则大不相同,它通过 Ajax 引擎,使得应用过程很自然,操作很流畅,因为其只和服务器交换有用的数据,而页面显示等不必要的数据则不再重新加载。Ajax 引擎其实就是 JavaScript、XML、XMLHttpRequest 等等各项技术的综合应用。
--图 1:传统 WEB 应用模型(左)与 Ajax 应用模型(右)的对比
当服务器在响应用户的请求时,用户在干什么呢?对,在等待。在任务的每一个步骤,用户都在做相同的事。
很明显,如果我们在系统设计时从scratch for applications的角度出发,用户就不会有漫长的等待。每当界面下载完毕,为什么和用户的每一次交互都会被等待所中断?
Ajax有什么不同?
Ajax应用利用了一种中间的媒介(Ajax引擎)消除了用户和服务器交互间的等待。这就像在传统的web模型中间加入了一层,可以降低响应时间。
替代页面下载的是,在Session刚开始时,浏览器下载一个用JavaScript编写的Ajax引擎,通常放在一个隐藏的框架里。这个引擎代替用户和服务器进行通讯。Ajax允许用户交互和服务器响应是异步的。这样用户就不会再看见那个后台操作的沙漏图标了。
--图 2:传统 WEB 应用程序的同步交互模式(上)与 Ajax 应用程序的异步模式(下)的对比
传统的发生HTTP请求的模式被js调用Ajax引擎所替代。所有的响应不用再需要服务器返回,Ajax自己就可以操作。如果Ajax引擎需要服务器的响应,它就会异步的向服务器发出响应,通常用XML,不会再出现等待的情况。
当前都有谁在使用 Ajax
当前应用 Ajax 的已有不少网站,如:
* Orkut
* Gmail
Ajax 应用前景
Ajax 的最大挑战并不是技术,组成 Ajax 的各项技术已经相当成熟、稳定及易学,主要挑战是如何使用 Ajax 设计应用程序,我们必须抛弃以往对于 WEB 局限性的看法,开始开阔视野、开放思想、不断创新,实现更加丰富的应用体验。
And More From 《Qiantu's Weblog》
有人专门开发了一个名为SAJAX(Simple Ajax Toolkit)的工具包,Sajax是一个开源的工具包可以帮助那些网站更加方便的使用Ajax。 Sajax可以在不进行浏览器刷新的情况下,通过使用Javascript来轻松的调用ASP, Cold Fusion, Perl, PHP, Python 等Web应用程序的功能。
相关链接: http://michael.nona.name/archives/95http://edad.com.cn/datou/2005/02/ajax.htm http://www.adaptivepath.com/publications/essays/archives/000385.phphttp://www.80s.net.cn/blog/comment.asp?Id=102 http://www.chinalabs.com/cache/doc/05/03/18/44523.shtml