首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

1.5  交互示例

现在,我们可能已经吊起了你的胃口,一个典型的Ajax交互究竟是什么样的呢?图1-4展示了Ajax应用中的标准交互范型。

图1-4  标准的Ajax交互

与标准Web客户端中的标准请求/响应方式相比,Ajax应用的做法有一点儿不同。

(1) 一个客户端事件会触发一个Ajax事件。很多事情都可以触发Ajax事件,从简单的onchange事件到某些特殊的用户操作。代码可能如下:

(2) 创建XMLHttpRequest对象的一个实例。使用open方法建立好对请求的调用。然后再设置好URL参数以及希望使用的HTTP方法,后者通常是GET或POST。对send方法的调用会真正发出这个请求。这部分代码可能如下:

(3) 请求被发送到了服务器。它可能是对servlet、CGI脚本或任何服务器端脚本(比如用PHP或ASP.NET编写的脚本)的调用。

(4) 服务器可以做任何事情,包括访问数据存储,或者甚至访问其他系统(比如账单系统或人力资源系统)。

(5) 请求被返回给浏览器。Context-Type设置为text/xml——因为XMLHttpRequest对象只能处理text/xml类型的结果。在更复杂的情况下,响应可能涉及并包含JavaScript、DOM操作或其他相关技术。注意,还需要设置首部,使其不会在本地缓存结果。如下代码可以做到这些:

1

 

(6) 在本例中,我们配置XMLHttpRequest对象,使其处理结果时调用函数callback()。后者检查XMLHttpRequest对象的readyState属性,然后查看从服务器返回的状态码。如果一切正常,callback()函数就会在客户端上做一些有趣的事情。典型的callback()方法如下所示:

正如所见到的那样,这和普通的请求/响应模式不太一样,但还不至于令Web开发人员感到太陌生。显然,在创建并设置XMLHttpRequest对象以及在“回调”中检查状态时,我们会进行一些额外的操作。通常,我们会把这些标准的调用封装到一个库中,这样就可以在程序的任何地方使用了;或者我们会使用别人已经封装好的库,通常我们可以从网上找到它们。这是一个新兴领域,但是也有不少开源项目已经开始崭露头角了。

总的来说,互联网上这些不同的框架和工具包都很好地处理了一些基本操作和对浏览器的抽象,有些还加入了用户界面组件。有些是纯粹基于客户端的,有些则需要在服务器端编写代码。这些框架中的大部分还处在开发或版本发布的初期,随着新库和版本的按时出现,其发展情况会经常地变化。随着这个领域的成熟,那些最好的框架就会脱颖而出。目前相对成熟的库包括Prototype、script.aculo.us、Dojo Toolkit、Direct Web Remoting(DWR)、Taconite和Rico。这是一个生气勃勃的领域,把你的RSS阅读器打开,仔细关注那些全面报道Ajax信息的网站吧!

Ajax会使应用成为Web 2.0吗

自从Time O’Reilly创造了这个术语之后,有些人就一直想把他们的Web应用印上Web 2.0的标记。至于成为Web 2.0究竟意味着什么目前还没有一个明确的答案。总的来说,它标志着应用鼓励与以往不同的用户参与。Wikipedia和Flickr这样的应用鲜明地向人们展示了Web 2.0的特性,而博客和标签更是使Web 2.0空前地活跃起来。

并不是所有人都认为Web 2.0是有价值的,有些评论家甚至拍着胸口承诺说自己永远也不会使用这个词。虽然有一些批评是可取的(有些都可以追溯到上个世纪90年代后期),不过当前很多的Web应用都拥有与类似的早期应用截然不同的特性。很多的现代应用都更开放、更欢迎用户的参与——有那么多基于Google Maps的mashup(结合Web服务来创建新的应用),如HousingMaps。事实上,Google Maps Mania博客就是为了统计基于Google Maps的不同应用而建立的。

这些新生应用中的大多数确实都使用了Ajax,Ajax也是Web 2.0的重要组成部分;但是,仅仅是简单地添加一些好看的用户界面控件并不等同于Web 2.0。虽然这个界线很模糊,但是真正使Web 2.0与众不同的是对广大用户智慧的利用(如Amazon的提示功能),把软件做成服务(如Google和Salesforce.com),轻量级开发(如每天或更频繁地部署),还有其他相似的特性。虽然Ajax确实是创建丰富用户体验的关键元素,它本身并不是Web 2.0。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论