掌握 Ajax,第 1 部分: Ajax 入门简介
@H_
404_4@
理解 Ajax 及其工作原理,构建网站的一种有效方法
@H_
404_4@Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成,这一杰出的
方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。
本系列的作者是一位 Ajax 专家,他演示了这些技术如何协同工作 —— 从总体概述到细节的讨论 —— 使高效的 Web 开发成为现实。他还揭开了 Ajax 核心概念的神秘面纱,
包括 XMLHttpRequest 对象。
@H_
404_4@
查看本系列更多内容 | 14
评论:
@H_
404_4@
Brett McLaughlin (
brett@newInstance.com),作家,编辑,O'Reilly Media Inc.
@H_
404_4@2006 年 1 月 04 日
@H_
404_4@五年前,如果不知道 XML,您就是一只无人重视的丑小鸭。十八个月前,Ruby 成了关注的中心,不知道 Ruby 的程序员只能坐冷板凳了。今天,如果想跟上最新的技术时尚,那您的目标就是 Ajax。
@H_
404_4@但是,Ajax 不
仅仅 是一种时尚,它是一种构建网站的强大
方法,而且不像学习一种全新的语言那样困难。
@H_
404_4@
请访问 Ajax 技术资源中心,有关 Ajax 编程模型信息的一站式中心,包括很多文档、教程、论坛、blog、wiki 和新闻。任何新信息都能在这里找到。
@H_
404_4@但在详细探讨 Ajax 是什么之前,先让我们花几分钟了解 Ajax
做 什么。
@H_
404_4@目前,编写应用程序时有两种基本的选择:
- @H_404_4@桌面应用程序
- @H_404_4@Web 应用程序
@H_
404_4@两者是类似的,桌面应用程序通常以 CD 为介质(有时候可从网站下载)并完全安装到您的计算机上。桌面应用程序可能使用互联网下载更新,但运行这些应用程序的
代码在桌面计算机上。Web 应用程序运行在某处的 Web 服务器上 —— 毫不奇怪,要通过 Web 浏览器访问这种应用程序。
@H_
404_4@不过,比这些应用程序的运行
代码放在 何处更重要的是,应用程序如何运转以及如何与其进行交互。桌面应用程序一般很快(就在您的计算机上运行,不用等待互联网连接),具有漂亮的
用户界面(通常 和操作系统有关)和非凡的动态性。可以单击、选择、输入、打开
菜单和子
菜单、到处巡游,基本上不需要等待。
@H_
404_4@另一方面,Web 应用程序是最新的潮流,它们提供了在桌面上不能实现的服务(比如 Amazon.com 和 eBay)。但是,伴随着 Web 的强大而出现的是等待,等待服务器响应,等待屏幕刷新,等待请求返回和
生成新的
页面。
@H_
404_4@显然这样说过于简略了,但基本的概念就是如此。您可能已经猜到,Ajax 尝试建立桌面应用程序的
功能和交互性,与不断更新的 Web 应用程序之间的桥梁。可以使用像桌面应用程序中常见的动态
用户界面和漂亮的控件,不过是在 Web 应用程序中。
@H_
404_4@还等什么呢?我们来看看 Ajax 如何将笨拙的 Web 界面转化成能迅速响应的 Ajax 应用程序吧。
老技术,新技巧
@H_
404_4@在谈到 Ajax 时,实际上涉及到多种技术,要灵活地运用它必须深入了解这些不同的技术(本系列的头几篇
文章将分别讨论这些技术)。好消息是您可能已经非常熟悉其中的大部 分技术,更好的是这些技术都很容易学习,并不像完整的编程语言(如 Java 或 Ruby)那样困难。
Ajax 的定义
@H_
404_4@顺便说一下,Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写。这个短语是 Adaptive Path 的 Jesse James Garrett 发明的(请参阅
参考资料),按照 Jesse 的解释,这
不是 个首字母缩写词。
@H_
404_4@下面是 Ajax 应用程序所用到的基本技术:
- @H_404_4@HTML 用于建立 Web 表单并确定应用程序其他部分使用的字段。
- @H_404_4@JavaScript 代码是运行 Ajax 应用程序的核心代码,帮助改进与服务器应用程序的通信。
- @H_404_4@DHTML 或 Dynamic HTML,用于动态更新表单。我们将使用
div
、span
和其他动态 HTML 元素来标记 HTML。
- @H_404_4@文档对象模型 DOM 用于(通过 JavaScript 代码)处理 HTML 结构和(某些情况下)服务器返回的 XML。
@H_
404_4@我们来进一步分析这些技术的职责。以后的
文章中我将深入讨论这些技术,目前只要熟悉这些组件和技术就可以了。对这些
代码越熟悉,就越容易从对这些技术的零散了解转变到真正把握这些技术(同时也真正打开了 Web 应用程序开发的大门)。
XMLHttpRequest 对象
@H_
404_4@要了解的一个对象可能对您来说也是最陌生的,即
XMLHttpRequest
。这是一个 JavaScript 对象,创建该对象很简单,如
清单 1 所示。
清单 1. 创建新的 XMLHttpRequest 对象
<scriptlanguage="javascript"type="text/javascript">
varxmlHttp=newXMLHttpRequest();
</script>
@H_
404_4@下一期
文章中将进一步讨论这个对象,现在要知道
这是处理所有服务器通信的对象。继续阅读之前,先停下来想一想:通过
XMLHttpRequest
对象与服务器进行对话的是
JavaScript 技术。这不是一般的应用程序流,这恰恰是 Ajax 的强大
功能的来源。
@H_
404_4@在一般的 Web 应用程序中,
用户填写表单字段并单击
Submit 按钮。然后整个表单发送到服务器,服务器将它转发给处理表单的脚本(通常是
PHP 或 Java,也可能是 CGI 进程或者类似的东西),脚本执行完成后再发送回全新的
页面。该
页面可能是带有已经填充某些数据的新表单的 HTML,也可能是确认
页面,或者是具有根据原来表单中输入数据选择的某些选项的
页面。当然,在服务器上的脚本或程序处理和返回新表单时
用户必须等待。屏幕变成一片空白,等到服务器返回数据后再重新绘制。这就是交互性差的原因,
用户得不到立即反馈,因此感觉不同于桌面应用程序。
@H_
404_4@Ajax 基本上就是把 JavaScript 技术和
XMLHttpRequest
对象放在 Web 表单和服务器
之间。当
用户填写表单时,数据发送给一些 JavaScript
代码而
不是 直接发送给服务器。相反,
JavaScript 代码捕获表单数据并向服务器发送请求。同时
用户屏幕上的表单也不会闪烁、消失或延迟。
@H_
404_4@换句话说,JavaScript
代码在幕后发送请求,
用户甚至不知道请求的发出。更好的是,请求是异步发送的,就是说 JavaScript
代码(和
用户)不用等待服务器的响应。因此
用户可以继续输入数据、滚动屏幕和使用应用程序。
@H_
404_4@然后,
服务器将数据返回 JavaScript 代码(仍然在 Web 表单中),后者决定如何处理这些数据。它可以迅速更新表单数据,让人感觉应用程序是立即完成的,表单没有提交或刷新而
用户得到了新数据。 JavaScript
代码甚至可以对收到的数据执行某种计算,再发送另一个请求,完全不需要
用户干预!
@H_
404_4@这就是
XMLHttpRequest
的强大之处
。它可以根据需要自行与服务器进行交互,用户甚至可以完全不知道幕后发生的一切。结果就是类似于桌面应用程序的动态、快速响应、高交互性的体验,但是背后又拥有互联网的全部强大力量。
加入一些 JavaScript
@H_
404_4@得到
XMLHttpRequest
的句柄后,其他的 JavaScript
代码就非常简单了。事实上,我们将使用 JavaScript
代码完成非常基本的任务:
- @H_404_4@获取表单数据:JavaScript 代码很容易从 HTML 表单中抽取数据并发送到服务器。
- @H_404_4@修改表单上的数据:更新表单也很简单,从设置字段值到迅速替换图像。
- @H_404_4@解析 HTML 和 XML:使用 JavaScript 代码操纵 DOM(请参阅 下一节),处理 HTML 表单服务器返回的 XML 数据的结构。
@H_
404_4@对于前两点,需要非常熟悉
getElementById()
方法,如
清单 2 所示。
清单 2. 用 JavaScript 代码捕获和设置字段值
//Getthevalueofthe"phone"fieldandstuffitinavariablecalledphone
varphone=document.getElementById("phone").value;
//Setsomevaluesonaformusinganarraycalledresponse
document.getElementById("order").value=response[0];
document.getElementById("address").value=response[1];
@H_
404_4@这里没有特别需要注意的地方,真是好极了!您应该认识到这里并没有非常复杂的东西。只要掌握了
XMLHttpRequest
,Ajax 应用程序的其他部分就是如
清单 2 所示的简单 JavaScript
代码了,混合有少量的 HTML。同时,还要用一点儿 DOM,我们就来看看吧。
以 DOM 结束
@H_
404_4@最后还有 DOM,即文档对象模型。可能对有些读者来说 DOM 有点儿令人生畏,HTML 设计者很少使用它,即使 JavaScript 程序员也不大用到它,除非要完成某项高端编程任务。大量使用 DOM 的
是 复杂的 Java 和 C/C++ 程序,这可能就是 DOM 被认为难以学习的原因。
@H_
404_4@幸 运的是,在 JavaScript 技术中使用 DOM 很容易,也非常直观。现在,按照常规也许应该说明如何使用 DOM,或者至少要给出一些示例
代码,但这样做也可能误导您。即使不理会 DOM,仍然能深入地探讨 Ajax,这也是我准备采用的
方法。以后的
文章将再次讨论 DOM,现在只要知道可能需要 DOM 就可以了。当需要在 JavaScript
代码和服务器之间传递 XML 和改变 HTML 表单的时候,我们再深入研究 DOM。没有它也能做一些有趣的工作,因此现在就把 DOM 放到一边吧。