AJax技术

Ajax 技术简介(3)

字号+ 作者:H5之家 来源:H5之家 2015-11-16 15:49 我要评论( )

既然基于Web的应用是有史以来最好的东西,那我们为什么还要写这本书?如果回头看看Internet的起源,可以看到,最初Internet实际上就是让科学家们和学术机构交换


既然基于Web的应用是有史以来最好的东西,那我们为什么还要写这本书?如果回头看看Internet的起源,可以看到,最初Internet实际上就是让科学家们和学术机构交换文章和研究成果,这是一种简单的请求/响应模式。那时不需要会话状态,也不需要购物车;人们只是在交换文档。尽管你有很多办法来创建动态的Web应用,但如果想让应用在用户中真正深入人心,想要得到大量的用户,就必须在浏览器上大做文章,这说明,Internet以请求/响应模式做为基础,由此带来的同步性也造成了妨碍。
与Microsoft Word或Intuit Quicken之类的胖客户应用相比,Web模型当然只具有“平均性”,只能对所有用户做折衷考虑。不过,由于Web应用很容易部署,而且浏览器的发展相当迅速,这意味着大多数用户都已经学会了适应。但是,还是有许多人认为Web应用只是算“二等公民”,给人的用户体验不是太好。因为Internet是一个同步的请求/响应系统,所以浏览器中会整个页面进行刷新。最初,这种简单的请求并没有什么问题,如果用户做了一两处修改,就必须向服务器发回整个文档,而且要重新绘制整个页面。尽管这样是可以的,但是由于存在这种完全刷新限制,意味着应用确实很粗糙。
这并不是说开发人员只是袖手旁观,全然接受这种状况。Microsoft对于交互式应用有一定了解,而且对于这种标准请求/响应模式的限制一直都不满意,因此提出了远程脚本(remote scripting)的概念。远程脚本看似神奇,其实很简单:它允许开发人员创建页面,从而以一种异步的方式与服务器交互。例如,客户可以从一个下拉列表中选择状态,这样就会在服务器上运行一个脚本,并确定客户的发货花销。更重要的是,显示这些花销时无需刷新整个页面!当然,Microsoft的方案只适用于它自己的技术,而且需要Java,但有了这个进步,说明更丰富的浏览器应用并不是海市蜃楼。
对于同步页面刷新问题还有其他一些解决方案。针对Microsoft的远程脚本,Brent Ashley在创建JavaScript远程脚本(JavaScript Remote Scripting,JSRS)时开发了一个平台中立(独立于平台)的方案。JSRS依赖于一个客户端JavaScript库和DHTML,可以向服务器做异步的调用。与此同时,许多人利用了IFRAME标记,可以只加载页面中的某些部分,或者向服务器做“隐藏”的调用。尽管这是一个可行的方法,而且也为很多人所用,但它肯定不是最理想的,还有待改善。

1.3.10 Ajax

终于谈到这里了:客户希望得到一个功能更完备的应用,而开发人员想避开繁琐的部署工作,不想把可执行文件逐个地部署到数以千计的工作站上。我们已经做过很多尝试,但是任何一种方法都不像它原来标榜得那么完美。不过,最近又提出一个极其强大的工具。
如今我们又有了一个新的选择,新的工具,可以创建确实很丰富的基于浏览器的应用。我们有了Ajax。Ajax不只是一个特定的技术,更应算是一种技巧,不过其前身JavaScript主要是一种组件。我们知道,你可能会说“JavaScript根本不值一提”,但是由于Ajax的出现,人们对这种语言又有了新的兴趣,应用和测试框架再加上更优秀的工具支持,这些都减轻了开发人员肩头的重担。随着Atlas的引入,Microsoft对Ajax投入了大力支持,而名声不太好的Rails Web框架也预置了充分的Ajax支持。在Java世界中,Sun已经在其BluePrints Solutions Catalog中增加了许多Ajax组件。
坦率地讲,Ajax并不是什么新鲜玩艺。实际上,与这个词相关的“最新”术语就是XMLHttpRequest对象(XHR),即使是这个术语也早在 Internet Explorer 5(于1999年春天发布)中就已经出现了,那时是作为 Active X控件露面的。不过,真正新的内容是浏览器的支持。原先,XHR对象只在Internet Explorer中得到支持(因此限制了它的使用),但是从Mozilla 1.0和Safari 1.2开始,对XHR对象的支持开始普及。这个很少使用的对象和相关的基本概念甚至已经出现在W3C标准中:DOM Level 3 加载和保存规范(DOM Level 3 Load and Save Specification)。现在,特别是随着Google Maps、Google Suggest、Gmail、Flickr、Netflix和A9等应用变得越来越炙手可热,XHR也已经成为事实上的标准。
与前面几页提到的方法不同,Ajax在大多数现代浏览器中都能工作,而且不需要任何专门的软件或硬件。实际上,这种方法的一大优势就是,开发人员不需要学习一种新的语言,也不必完全丢掉他们原先掌握的服务器端技术。Ajax是一种客户端方法,可以与J2EE、.NET、PHP、Ruby和CGI脚本交互,它并不关心服务器是什么。尽管存在一些很小的安全限制,但即使不清楚这些安全限制,你也可以现在就开始使用Ajax,而且能充分利用你原有的知识。
你可能会问“谁在使用Ajax?”。前面已经提到,Google显然就是最早采用Ajax的先驱之一,而且已经有很多这方面技术的例子,包括Google Maps、Google Suggest和Gmail,这还只是其中的几个应用而已。Yahoo!也开始引入Ajax控件,另外Amazon提供了一个简洁的搜索工具,其中大量使用了这个技术,例如,在钻石的某一方面上移动滑块,这会带来动态更新的结果。并不是每次改变你的评价标准时都会更新页面,你在移动滑块时就会查询服务器,这样就能更快、更容易地明确你的选择。
Netflix,是一家很热门的DVD租借公司,它也使用了Ajax,用户浏览影片时,可以提供更详细的信息。如果客户把鼠标放在一个影片的图片上时,这个影片的ID就会发送到中心服务器,然后会出现一个“气泡”,提供这个影片的更多细节。同样的,页面并不会刷新,每个影片的详细信息并不是放在隐藏的表单域中。利用这种方法,Netflix可以提供影片的更多信息,而不会把页面弄乱。客户浏览起来也更容易,他们不必点击影片,看完影片详细信息后再点击回到影片列表页面;客户只需把鼠标停在影片上,就这么简单!我们想要强调的是,Ajax并不限于“.com”之类的网站才能使用;公司的开发人员也开始涉足这个技术,有一些开发人员已经在使用Ajax来改善原来很丑陋的验证方案,或者用于动态地获取数据。
关键在于,Internet默认的请求/响应模式有了重大转变,这正是Ajax的核心所在,尽管这并非全新的内容。Web应用开发人员现在可以自由地与服务器异步交互,这说明,他们可以完成许多原本只能在胖客户上完成的任务。例如,用户输入一个邮政编码时,可以验证这个邮政编码是否正确,然后用相应的城市和州填写表单中的其他部分;或者,用户选择美国时,可以用美国的各个州来填写一个下拉列表。以前也可以用其他方式模拟这些工作,但是使用Ajax的话,这些工作会更加简单。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JQuery实现Ajax加载图片的方法

    JQuery实现Ajax加载图片的方法

    2016-02-24 17:01

  • 判断用户是不是为ajax请求

    判断用户是不是为ajax请求

    2016-02-24 17:00

  • Ajax与WEB开发 by alixixi.com

    Ajax与WEB开发 by alixixi.com

    2016-02-11 11:02

  • jQuery.ajax()的相关参数及使用

    jQuery.ajax()的相关参数及使用

    2016-02-08 16:00

网友点评