您所在的位置: 首页>>读书频道>>设计开发>>.Net系列>>

2.3 了解Ajax工具箱

http://book.51cto.com  2008-04-21 11:09  Michael Morrison著/李松风译  机械工业出版社  我要评论(0)

2.3   了解Ajax工具箱

目前,我已经多次提到本书CD-ROM中所提供的Ajax工具箱。现在,我们就来看看它到底是什么以及如何使用它。如果你基本上靠自己完成Ajax开发,最终将会发现,没有几百个也会有数十个Ajax库是专为更加简单有效地使用Ajax而设计的。而且,这些库中的大部分都达到了它们的目标。但问题是,要学会使用其中很多库,都必须像学习Ajax一样,需要下一番不小的功夫。这可不是件轻松的事,除非你打算构建一个大型的而且非常花哨的Ajax应用。但如果真是那样的话,你大概就想要建立自己的Ajax库。

为了尽可能保持简单和直观,我选择为本书建立自己定制的Ajax库,这个库也将作为你把Ajax特性整合到自己网页中去的一个起点。在很多情况下,你都可以原封不动地使用我提供的代码取得立杆见影的效果。除此之外,你也可以运用自己的JavaScript和XML知识把我的代码提升到更高层次。无论怎样,我的Ajax工具箱都是一个进行Ajax Web应用开发的便利出发点,而且掌握它的用法也不需要太多时间。

我的Ajax魔法工具箱由几个JavaScript文件组成,其中每个文件都包含一些JavaScript函数和辅助代码:


ajaxkit.js—核心Ajax。
domkit.js—DOM((Document Object Model,文档对象模型)。
modalimgkit.js—模态图像。
validatekit.js—数据验证。
infowinkit.js—信息窗口。
ratingkit.js—五星评级。

我用“辅助代码”的作用是,在这些文件中提供了预置代码,能够显著简化完成某些任务的过程。但并不是在你开发的每个Ajax驱动的网页中都需要包含所有这些文件。举例来说,下面就是将前两个文件导入到一个页面中的代码,而且这两行代码必须放在页面的<head>元素中:

 <script type="text/javascript" src="ajaxkit.js"> </script>
<script type="text/javascript" src="domkit.js"> </script>

当把这些行代码添加到页面中之后,你就可以自由地使用Ajax工具箱中的相应文件所提供的功能了。
接下来的几节会更详细地介绍Ajax工具箱的不同部分。虽然我会逐一解释每个工具箱文件中不同的JavaScript函数,但能否记住它们甚至完全理解它们的角色和作用并不重要。目前只需从一般意义上知道工具箱中都包含哪些部件即可,本书其余的章节将在遇到每个问题时更详细地讲解这个工具箱的用法。
ajaxkit.js

工具箱中的ajaxkit.js文件中包含两个JavaScript函数,这两个函数分别用于提交Ajax请求和更新Ajax诊断栏:

ajaxSendRequest(type, url, handler, postDataType, postData)
ajaxUpdateState()

如果你不熟悉JavaScript函数,只需要知道它们是能够完成特定任务的、可重用的代码块就可以了。在这里,ajaxSendRequest()函数用于根据提供给它的五个参数,向服务器发送一个Ajax请求。同样,现在能否理解什么是函数的参数也不重要,等到在实际的示例应用程序中使用ajaxSendRequest()函数时,你就会知道它们的用途了。目前,只需要知道这五个参数对应着Ajax请求的类型(GET或POST)、处理请求的服务器端程序地址、你提供的用于处理服务器响应的自定义函数,以及可选的数据类型和数据(在请求类型为POST时提供)。

注意

Ajax请求的类型(GET或POST)直接与Ajax请求就是HTTP请求这个事实有关。如果你曾经使用过HTML中的表单,就应该对GET和POST请求比较熟悉。大致来说,如果你想从服务器获得信息就使用GET请求,而使用POST则表示要向服务器传递信息。展示一下如何使用ajaxSendRequest()函数并不是什么非常困难的事,下面就是在Booker电子图书阅读器示例中实际使用的Ajax请求:

 ajaxSendRequest("GET", "book_" + title + ".txt", handleRequest);

即使没有多少JavaScript经验,也不难看出第一个参数表示这是一个GET请求,第二个参数是一本书的文件名(格式如book_alicewonderland.txt),而最后一个参数则是自定义处理函数的名称。在本章稍后我们还会再看到这行代码。

ajaxUpdateState()函数用于更新你在图 2-2和2-3中所看到的Ajax诊断栏。你会在自己创建的、用于处理服务器响应的函数中调用这个函数,像下面这样:

ajaxUpdateState();

调用一个JavaScript函数,简单地说就是告诉这个函数去执行设计好的任务。而处理函数也是一个普通的函数,它会在某些情况发生时被调用。比如,鼠标单击事件处理函数会在鼠标单击事件发生时被调用。类似地,每个Ajax应用都有一个自定义的请求处理函数,当请求的状态发生变化时会调用这个函数。这就是为什么理解本章前面介绍的请求状态非常重要的原因所在。我们会在2.4节中重新回顾请求的状态,并搞清楚在Ajax工具箱中如何利用它们。

domkit.js

再看看Ajax工具箱中的另一个文件—domkit.js,这个文件由一些完成不同DOM任务的函数组成。例如,replaceText()函数负责改变页面中一个元素的文本内容:

replaceText(elem, text)
如果你之前使用JavaScript编写过程序,可能对多数HTML元素都有的innerHTML属性比较熟悉,通过这个属性可以改变页面中一个元素的文本值。这个属性的用法得到了现代Web标准的尊重,但现在我们鼓励你在多数情况下使用更新的DOM特性来修改元素的内容。然而,这种更新的方法并不像设置一个单独的属性那么简单。为了避免一行行地复制代码,我创建了一个名为replaceText()的函数用于帮你完成内容替换。你只需要把相应的元素和新内容传递给replaceText()函数,其余的事它会帮你完成。举个例子,下面这行代码会把保存在firstName中元素的内容修改为“Michael”:
replaceText(firstName, "Michael");

你将发现在本书的示例中经常会用到这个函数。同样,只要你在页面中导入了domkit.js文件,就可以随意地使用其中的函数。别担心,当我们逐一讲解每个示例时,你会看到如何导入文件和使用replaceText()函数,因此现在不用完全理解这些内容。

与replaceText()类似的是getText()函数,这个函数使用DOM方法解析一个HTML元素的内容:

 getText(elem);
给这个函数传递一个HTML元素,它就会返回该元素的内容。
在domkit.js文件中,还包含四个确定浏览器窗口显示区域的函数,当在页面上精心布置元素时,使用它们将会非常方便:
 getClientWidth()
getClientHeight()
getClientLeft()
getClientTop()
这些函数分别返回浏览器显示区域的宽度、高度、左侧位置和顶端位置,这四个值决定页面实际显示的位置。换句话说,这些值没有考虑浏览器界面中的各种工具栏、状态栏以及其他围绕页面的小部件。
domkit.js中的最后一个函数用于获取浏览器通过cookie存储的数据:
getCookieData(cookieName)
这个函数以我们刚才所说的cookie的名称作为参数,返回该cookie的值。cookie是一种便捷方式,用来记录用户在页面中所做的东西。有关cookie的讨论将在第12章中进行,届时你将构建一个五星级评级应用程序。
modalimgkit.js
工具箱中的modalimakit.js文件只包含一个单独的JavaScript函数,这个函数能够向网页中添加模态图像支持:
 initModal()

在第8章中,我们将学习有关模态图像的方方面面。不过,其基本的思想就是让你通过缩略图来以实际大小查看图像,而不必在浏览器中加载一个新页面。与应用程序窗口中出现的“关于”对话框类似,模态图像会以弹出方式出现在当前网页的上方。

validatekit.js
工具箱中的validatekit.js文件为验证不同类型的用户输入提供了一些有价值的函数:

 validateNonEmpty(inputControl, helpControl)
validateInteger(inputControl, helpControl)
validateNumber(inputControl, helpControl)
validateZipCode(inputControl, helpControl)
validatePhone(inputControl, helpControl)
validateEmail(inputControl, helpControl)
validateDate(inputControl, helpControl)

这些函数分别与验证特定类型的数据相关联,能在表单中碰到的最常见的数据类型都包含在其中了。这些函数接受的两个参数,分别是要验证的输入控件和当发现验证问题时显示帮助信息的输出元素。

infowinkit.js
工具箱中的infowinkit.js文件包含的函数,用于向页面中添加Ajax驱动的弹出式信息窗口

 initInfoWindow(width, height) 
showInfoWindow(infoURL, evt)
调用第一个函数将初始化信息窗口的宽度和高度,而第二个函数则实际地显示带有来自指定URL的内容的信息窗口。
 ratingkit.js
工具箱中的ratingkit.js文件实现了一个可以添加到任何网站中的五星级评级系统,支持为多个项目添加评级功能:
initRatings()
setRating(id, rating)
第一个函数用于初始化评级系统,而第二个函数则为具体的项目设置评级功能。评级系统中的每个项目都以一个唯一的ID值指定,这个ID值就是setRating()函数的第一个参数。setRating()函数的第二个参数用于指定评级功能,该参数的取值范围是从1到5。
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
深入Vista应用程序开发
思科认证之CCNP考试最新资料宝典
程序员如何成长?
解析Ajax开发框架 走进Ajax开发应用
Ajax明天会HOT还是OVER?
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有