一、引言
例如,在google maps站点(http://maps.google.com/),你可以点击地图,放大,缩小并且根据你的需要来回拖动地图。你的浏览器继续使用来自于服务器的数据,然而你的浏览器却不需要刷新。它们没有使用applet,也不是类似于flash的技术;那么它们到底干了些什么呢? 【相关文章:思科为统一威胁防御 推出新安全管理套件】
最近,许多web站点引起大部分开发者的注意。这些站点所特有的地方在于,它们的行为更象一个桌面应用程序而不是一个web应用程序。当你与之交互时,它们将快速地向你的浏览器显示大量信息而不需要重载页面。 【扩展阅读:锐捷网络:安全交换机是安全解决方案命脉】
560)this.style.width=560; onmousewheel = javascript:return big(this) src="/files/uploadimg/20060510/151211397.jpg" width=500 border=0> 【扩展信息:暴力测试:谁家杀毒软件可防QQ密码被盗】
首先,我们介绍一下异步javascript+xml,也称作ajax。为了准确地说明什么是ajax,我们最好把它与不是ajax的技术作一对比。对于大多数web站点来说,与一个web服务器进行交互是一种单一的通讯—就象通过一个无线电话机与你的朋友谈话一样。你在讲他在听,或者相反;但是却不能同时进行。对于一个web用户来说,当他/她填写一个在线表单然后点击提交按钮时,整个页面被寄送到web服务器,然后该用户必须等待服务器接受请求。当服务器完成请求处理后,它把处理后的内容发送回浏览器端。只有在此时,用户的页面才最终得到刷新(参考下图1)。ajax是缓解这一系列的事件问题的一种有力的尝试。当用户处于一个ajax web站点时,浏览器能够在后台异步地调用web服务器而不必寄送整个页面。
图1.典型的web应用程序架构 点击看原图二、细节技术分析
当前还没有出现专门针对于ajax的sdk,因此这不是你能够下载的某种东西。它实际上是一种若干技术(它们可能或者甚至不使用xml,尽管ajax命名中明确地提及xml)的混合产物。通过从底层深入分析来看,我们发现它们使用了一种混合技术—javascript,dom,xmlhttp与xml是主要的实现技术。然而,请记住对于这种技术既不存在一定的标准也不存在严格的定义。你在某处发现的实现技术可能与另一处的实现技术有很大不同。然而,对于ajax实现来说共同的一点那就是,它们都使用了javascript。
当用户与浏览器交互时,javascript代码将处理各种事件,例如键击或鼠标点击事件,并分别对它们进行相应的处理。javascript使用xmlhttprequest对象联系浏览器与远程服务器。其实,微软首先在其internet explorer 5中实现了xmlhttprequest对象(此后,其它一些浏览器相继添加了对这个对象的支持)。
关于xmlhttprequest对象的很酷的一点是,当它异步地在后台运行时它可以与web服务器进行交互,而不必重载整个页面。当web服务器收到一个来自于浏览器的请求时,它就进行相应的处理,然后把处理后的xml数据返送回浏览器端。javascript引擎将接收这个处理后的xml,并且使用dom来操作相应的页面元素。例如,在一个ajax驱动的页面中,例如google suggest站点(www.google.com/webhp?complete=1&hl=en),当你在搜索域中输入内容时,每一个字符就会被异步地传送到服务器端。外观看上去,当你输入数据时,单词就会快速地出现在文本域中;其实,在后台,针对每一次键击,向服务器发送了若干次调用。用户基本上没有被此所干扰,因为他们的交互并没有中断,只有页面的一部分得到刷新。所有这些都可以被有效地实现,因为只有一小部分页面数据被传送到线路上,而不是整个的页面。
三、一个ajax示例
下面,让我们分析一个简单的ajax例子。... 下一页