一、 ajax的简短历史
在短短几个月内,ajax从一种十分模糊稀罕的技术一下变成最热门的东西。本文将介绍极其容易使用的ajax支持-作为ruby on rails web应用程序框架的一部分实现。 本文不是一个详细的教程,所以我假定你已经了解一点关于如何组织和构建一个rails web应用程序的知识。
最开始出现的是万维网。比较于桌面应用程序,web应用程序相当缓慢和沉闷。无论如何,人们都喜欢上了web应用程序,因为他们无论在什么地方都能上网,只要身边的计算机上安装一个浏览器就行。之后,微软在inte.net explorer 5中创建了xmlhttprequest,它使得浏览器端javascript可以与web服务器在后台进行通讯而不需要浏览器显示一新的web页面。这使得人们有可能开发更具有流畅性和响应性的web应用程序。mozilla不久在它的浏览器中也实现了xmlhttprequest,还有apple(safari浏览器)和opera等公司。
xmlhttprequest原先一定是web上的一个被保持得最好的秘密。自从它在1998年初次登场,只有很少几个站点使用它,而大多数开发者,如果他们曾经了解过它的话,也从未使用过它。google最终改变了这一现状-它发行了一系列的高度轮廓性的web应用程序-在xmlhttprequest技术支持下,它们拥有平滑的新颖的ui。最具有视觉吸引力的是google maps,它给你产生这样的幻想-能够在它的很小的窗口中围绕着一个无限大小的地图拖动鼠标。
当google的突出对xmlhttprequest的使用的事实戏剧性地表明完全可以大大改进web应用程序ui效果的时候,是jesse james garrett的一篇论文最终给了这种技术一个可用的名字:ajax(异步javascript和xml)。如果还不了解它的话,我们的整个业界至今可能还在等待之中。如今新的ajax名字就象疾风野火迅速传播开来。我从来没见过如此迅速和这么亲近地采纳一种新技术!
二、 传统型web应用程序与ajax应用程序的对比
让我们通过分析一个使用案例-把一个新项插入到一个列表中-来看一下一个ajax web应用程序最本质的所在。
在例中实现了一典型用户接口-在一个web页面中显示当前列表,后面跟着一个输入字段-用户在此可以输入一个新项的文本。当用户点击一个新建项目按钮时,应用程序实际上创键并把一个新项插入到列表中。
在这种情况下,一传统型web应用程序会发送输入字段值到服务器;然后,服务器作用于数据(通常通过更新一数据库)并通过发送回一个新的web页面-它显示一个被更新后的包含该新项的列表-作为响应。这种情况占用了很多带宽,因为大多数新的页面内容与原先的完全一样。这个web应用程序的性能随着列表的增长而逐渐下降。
相反,一个ajax web应用程序在后台发送输入字段到服务器并且只更改当前web页面受到影响的部分。这大大提高了用户接口的响应能力,使它感觉起来象一个桌面应用程序。
你可以亲自试验一下这些效果。下面是一些到不同博客的链接,其中的一个使用ajax来发送评价而另一个没用。你可以在它们之间相互寄送进行实验:
·传统型的web应用程序
·ajax web应用程序
注意,ajax仅仅在于使用性。但是,就象任何技术一样,你可以高效地使用它,也可能低效地使用。在展示了怎样使用ajax之后,我将给出一些关于何时使用ajax的简单建议。
三、 怎样在web应用程序中使用ajax
在你的web应用程序中使用ajax技术的较麻烦的方法是创建你自己的定制javascript-它直接使用xmlhttprequest对象的api。为此,你必须处理每种浏览器的特性。
一个较容易些的办法是使用一个javascript库-它提供了较高级的ajax服务并且隐藏了浏览器之间的差别。象dwr,prototype,sajax和ajax.net这样的库都是很好的选择。
最容易的办法是使用rails中内建的ajax工具。事实上,rails使ajax变得如此容易,以至于在典型情况下,使用ajax和不用变得几乎一样容易。
四、 rails是怎样实现ajax的
rails拥有一个简单的一致性模型来实现ajax操作。
一旦浏览器生成并显示了起始web页面,不同的用户操作要求它显示一个新的web页面(就象任何传统型的web应用程序)或触发一个ajax操作:
1. 发生一个触发器行动。这可能是用户点击一个按钮或一个超级链接或者用户改变了表单中的数据或字段中的数据,或只是一个周期的触发器(基于一个定时器)。
2. 与触发器相联系的数据(一个字段或一个完整的表单)经由xmlhttprequest被异步地发送到服务器上的一个行动处理器。
3. 服务器端行动处理器基于这些数据采取一些行动(这就是为什么称为一个行动处理器),并且返回一个html片断作为它的响应。
4. 客户端javascript(由rails自动地创建)收到该html片断并且使用它更新当前html页面指定的部分,经常是一个<div>标签的内容。
一个到服务器的ajax请求也可能返回任意的数据,但是我将仅讨论一下html片断。真实的美丽在于rails使得在你的web应用程序中实现这些是多么地容易。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器