AJAX,中文译作艾亚斯,《荷马史诗》里著名的特洛伊战争中的古希腊战斗英雄,以骁勇善战之名传世。如今,一种称为AJAX的新的网页交互技术仿佛一夜之间在Web 2.0的战场上攻城夺地,占尽风头。AJAX战斗力何在?让我们来近距离地看看这位今天的Web2.0名将。 兵器 JavaScript+XML AJAX的全称叫做异步JavaScript及XML技术(Asynchronous JavaScript And XML),此技术最常见的应用就是大名鼎鼎的GMail。初上手时并没有感觉GMail和其他的WebMail有什么不同,但只要点击一个链接,差异就出来了:邮件内容或者选项菜单仿佛是一瞬间弹出来的,这和其他的WebMail需要等好一阵子看着整个页面被刷新的感觉完全不一样。 应用了AJAX技术的Web页面和传统的动态页面根本不同。传统的动态页面的工作原理是通过HTTP协议接受几个从前一页面传递而来的参数,而后根据这些参数进行一些计算或读取更多的数据,然后把计算结果或读取的数据写到一个结果页面里去,并返回给浏览器。 而AJAX的工作过程则是使用JavaScript发出一个XMLHTTPRequest,这个过程传送的数据没有什么不同,但是深刻的变化就发生在返回的内容上。这里,返回的内容已经从整个页面变成了仅仅是一些计算结果或数据。当它们被返回到本地以后,由一个AJAX引擎使用XSLT技术将它们按照预定的文档对象模型转化成最终的Web页面的更新内容——注意,不是用一个页面代替另一个页面,而是对当前页面的显示更新。 也就是说,传统的动态页面要刷新整个页面,要等服务器把整个页面发送回来。而采用了AJAX技术的网页只要服务器发回来几个数据,在本地用 JavaScript刷新页面即可,不需要用户等待从服务器端返回的大量页面内容,又能迅速把结果通过本地的页面操作显示给用户。 这正是XML技术的神奇之处,它能够做一个在服务器和客户端之间进行小型数据传递的“搬运工”。在草根族大规模云集的Web2.0时代,数据通信量会在很大程度上决定服务规模,因此,应用了XML技术的AJAX成为Web2.0时代的核心武器,也就毫不奇怪了。 战场 交互式应用 AJAX的静态页面刷新的思路有广泛的应用,这在需要较快反应速度或对页面变化敏感的场合都极为有用。一个比较常见的应用是使用AJAX技术来完成页面编辑的即时显示和预览。这个应用多见于Blog里的评论或论坛中的板帖书写。MSN Spaces就应用了AJAX技术以做到用户一提交完评论,马上就可以显示,而不用把整个页面刷新一遍才能看到。 Google Groups也使用了AJAX技术,所以用户一发完帖立刻就可以看到了。还有一个比较常见的应用就是需要经常刷新的页面,特别是比较大的页面,如在线人数列表、股票代码滚动显示等,采用了AJAX技术后,就可以以更高的频率刷新,而且不会引起整个页面的操作中断了。GMail的当前容量指示,就是AJAX 的一个应用。 其实,AJAX有更广泛的应用前景,因为它的实质是把一大部分计算从服务器端转移到客户端。这样的新思路甚至可以说是WebOS的基础,远程服务器负责的是指令的回传,而实际的系统调用操作则在本地利用丰富的计算资源完成。 在Web 2.0时代,一个最大的特点就是“全民织网”,也就是说会出现极为密集的服务器请求。把计算任务移至本地,最大程度地减少服务器负担,把服务器的计算资源用在刀刃上,就成了在Web2.0时代成败的关键。一个简单的例子就是仅仅是把AJAX和Flash技术结合一下就产生了一个巨大的快速地图的应用 Google Maps,所以说AJAX的应用可以说还只是方兴未艾。 走势 死穴和生门 AJAX技术也存在一些问题, 首先它对浏览器比较挑剔,必须是完全支持JavaScript 1.2标准的浏览器才能够正常使用。其次,它需要把JavaScript功能打开,这在一些安全性要求比较高的场合是不能接受的。 对AJAX技术的另一个主要批评来自它对“回退”功能的支持不够好。因为从原理上讲,AJAX的一切页面更新都是JavaScript完成的,都是本地操作,没有新页面代替旧页面,当然也就谈不上什么回退——因为在浏览器的视角里,一直都是同一个页面。使用GMail的用户都有这样的苦恼吧:查看一封邮件以后,想再回到前一封信,就不可能了。 这是一个比较令人头疼的问题。 另外,AJAX技术对于错误也显得比较敏感,由于服务器异常响应而使得数据不能完备的话,用户会感觉浏览器当机了。 尽管如此,由于用户体验的巨大改进,AJAX技术还是获得了很广泛的应用。常见的应用和主流的浏览器如Internet Explorer、FireFox和Safari等都已经正式支持了这一技术。相信随着XML技术的进一步普及,AJAX技术会给Web世界带来更多的精彩。 文章来源:http://www.cpcw.com/disp.php?aid=4473&cid=11