一定有什么吸引了您阅读本书。您可能是一位Web开发者,想要学习如何把Ajax技术更好地结合到您的工作中。您也可能想要一本放在桌上随手就能拿到的参考书,这样当您需要使用Ajax的时候可以随时参考此书。无论是哪种情况,我们都很高兴您已经做出了最正确的选择—— 本书一定能够使您满意。 本书覆盖了有关Ajax的各个方面,并且将告诉您如何把Ajax结合到您自己的Web应用程序中。本书旨在为具有一定经验或经验丰富的Web开发者提供新的技术,并且使他们的Web应用程序达到一个更高的水平。 本书第一部分“开始”主要是介绍Ajax的基础知识。这些基础知识包括:如何发送请求(第2章),如何以XML和JSON的格式接收响应(第3章),以及如何使用CSS和XHTML来呈现数据(第4章)。第二部分“创建和使用JavaScript引擎”介绍了如何利用JavaScript创建一个Ajax引擎。为了获得有关面向对象的JavaScript的背景知识,首先在第5章中学习如何利用JavaScript创建对象。理解了如何创建对象之后,我们将在第6章中集中学习如何创建Ajax引擎,在第7章中学习如何把Ajax引擎应用到实际的Web应用程序中。第8章将关注所有能够用于JavaScript的调试方法,以及如何使用这些调试方法来使您的工作变得更加轻松。更深入地理解了Ajax引擎之后,在第9章中我们将学习如何通过添加另外的JavaScript对象来扩展引擎。 在第三部分“创建可重用组件”中,我们将介绍如何创建众多具有Ajax支持的组件,用于呈现从服务器接收到的响应数据。我们所介绍的这些不同组件分别是:层叠(accordion)组件、Tree View组件、客户端验证组件(client-side validator),以及数据网格(data grid)组件。第四部分“Ajax模式”从第14章开始,我们将在该章中介绍如何把单体模式(Singleton pattern)和特定的JavaScript对象相结合,并且把它们应用到具有Ajax支持的Web应用程序中。第15章解释了如何使用模型视图控制器 (Model View Controller)模式构造JavaScript对象。然后,我们将在第16章中介绍观察者(Observer)模式,以及如何创建一个用于错误管理的对象。数据反射(Data Reflection)模式和多用户(Multi-User)模式将在第17章中介绍,这两个模式能够使我们了解如何创建交互的Web应用程序,这种Web应用程序允许用户共享Web空间,并且能够看到其他用户的更新。第18章和第19章将介绍有关Web应用程序中的交互作用和可用性的不同方式(或者说最佳实践)。第六部分“服务器端交互”将介绍如何使用不同的语言来连接服务器端甚至数据库的技术。本书的最后一部分“最后的润色”,正如其标题所说的那样,将解释如何为支持Ajax的Web应用程序进行最后的润色,例如安全性和最佳实践等。 本书示例简介 正如之前提到过的,本书的目的就是教您如何利用面向对象的JavaScript来创建可重用的Ajax应用程序。和创建单独的没有上下文的示例相比,我决定创建既可以单独有用,又能作为一个大型Web应用程序的组成部分而发挥作用的示例。因此,我们将在各个章节的单独示例中学习如何创建Ajax引擎、组件,以及如何连接数据库等,但是我们也将把这些单独的示例结合到一个贯穿全书的大型应用程序中,此应用程序将在本书中逐步地被创建。这个最终的应用程序将包含本书中所有标有“代码清单”标题的示例代码,我们将通过Ajax把它们结合起来,并且最终创建出一个可用于内部网的电子邮件应用程序,它可以应用在任何基于用户的应用程序中,例如基于社区的Web应用程序。 本书各章中的所有标有“代码清单”标题的示例代码都可以在网页上找到(这些示例中最后都用于最终的应用程序中)。在本书中,您不仅将学习如何创建和使用自己的可重用Ajax组件,还将学习如何把这些组件结合到任意Ajax应用程序中,以便充分利用它们的可重用性。 关于作者 Kris Hadlock自1996年开始就已经是一个签约Web开发者和设计者。他是InformIT以及其他众多有关Web设计杂志的重要专栏作家和撰稿人。他同时还是Studio Sedition(一个Web应用程序开发公司)的创始人,以及33Inc(发明DashboardHQ的公司)的创始人之一。他的博客“Designing with Code”,主要是从设计的角度来关注Web应用程序开发,并且经常给出一些非常有用的代码片段,用来帮助增强Web应用程序的功能。在作者的网站上可以找到以上介绍,并且了解更多有关作者的信息。 译者序 随着2005年初Ajax技术的出现以及迅速窜红,国外出现大量的Ajax相关书籍,而国内中译本也几乎是同步跟进并快速占领Web开发技术书籍的市场,使得国内Web开发者能够第一时间掌握Ajax技术。 但学习掌握Ajax技术是一回事,如何高效地将Ajax应用于开发实践则是另外一回事。学习Ajax技术,您也许会从XMLHttpRequest的创建开始,查看它的响应的状态,为响应设置相应的客户端响应函数。学习过程中您会不厌其烦地写一些大同小异的试验代码,您会为代码的正确执行而暗自高兴。但学习仅仅是学习,用户可不会因为您的网站弹出的“hello, world!”对话框是用Ajax实现的就频频光顾,他们需要的是更加丰富的用户体验,至于Ajax,用户首先想到的肯定是荷甲那支球服上画着希腊英雄头像的冠军球队。所以,如果您不能将Ajax高效地应用到您的工作中,那么Ajax仅仅是四个有着多种含义的字母。 那么,如何将Ajax高效应用于开发实践中呢?我相信本书就是试图在回答这样一个问题。我很希望将本书的中文版命名为《Ajax最佳实践》,但已被他人捷足先登。本书比之同类书籍,其特点正是在“最佳实践”这四个字上。首先,它只是一本薄薄的小书,却足以让一个Web开发者用最短的时间完成对Ajax从久仰大名的门外汉到游刃有余的行家里手的转变过程。其次,在前台尚无标准框架的今天,本书的确为您的Ajax开发提供了大量高度可重用、可扩展且有详细讲解的js对象,使您的开发不再需要一次次从零开始。 应该说本书并不适合那些没有任何Web开发经验的读者,但让这样的读者也能读懂却是我翻译过程中一个很重要的目标。在此感谢我的妻子,因为作为译稿的第一个读者,作为没有任何开发经验的菜鸟,要让她读懂,在翻译过程中需要更多的耐心并且精益求精。 因水平有限,错误在所难免,如有好的意见或建议,请发送至wkservice @tup.tsinghua.edu.cn,以便本书再版时能及时得到修订。