Ajax技术可以提供高度交互的Web应用,给予用户更丰富的页面浏览体验。本书重点介绍Ajax及相关的工具和技术,主要内容包括XMLHttpRequest对象及其属性和方法、发送请求和处理响应、构建完备的Ajax开发工具、使用JsUnit测试JavaScript、分析JavaScript调试工具和技术,以及Ajax开发模式和框架等。本书中所有例子的代码都可以从Apress网站本书主页的源代码(Source Code)免费得到。
本书适合各层次Web应用开发人员和网页设计人员阅读。
译者序
前言
致谢
关于技术审校
第1章 Ajax简介
1.1 Web应用简史
1.2 浏览器历史
1.3 Web应用的发展历程
1.4 可用性问题
1.5 相关技术
1.6 使用场合
1.7 设计考虑
1.7 小结
第2章 使用XMLHttpRequest对象
2.1 XMLHttpRequest对象概述
2.2 方法和属性
2.3 交互示例
2.4 GET与POST
2.5 远程脚本
2.6 如何发送简单请求
2.7 DOM Level 3 加载和保存规约
2.8 DOM
2.9 小结
第3章 与服务器通信:发送请求与处理响应
3.1 处理服务器响应
3.2 发送请求参数
3.3 小结
第4章 实现基本Ajax技术
4.1 完成验证
4.2 读取响应首都
4.3 动态加载列表框
4.4 创建自动刷新页面
4.5 显示进度条
4.6 创建工具提示
4.7 动态更新Web页面
4.8 访问Web服务
4.9 提供自动完成
4.10 小结
第5章 构建完备的Ajax开发工具箱
……
第6章 使用JsUint测试JavaScript代码
第7章 分析JavaScript调试工具和技术
第8章 万事俱备
附录A 开发跨浏览器JavaScript
附录B Ajax框架介绍
见过Google Maps的界面吗?也许你还不以为然,如果是桌面应用,这只是雕虫小技而已。不过要知道,你看到的可不是桌面应用,它完全是一个Web应用!
也许你又会说,是Web应用又怎么样?我一样可以做到。不错,不是有这么一句话吗?“只要功夫深,铁杵也能磨成针。”只要你肯想办法,没有做不到的。但是,可以告诉你,这个应用并没有让开发人员费多大力气。
是什么“高级技术”让开发人员如虎添翼?又是什么“宝贝”使用户欣喜万分?
这就是Ajax!
Ajax并不是一个高深的技术,如果说是宝贝,也只能算是“老宝贝”!曾经有人评价Ajax是“新瓶装老酒”。但是这并不妨碍人们对它趋之若鹜。而且Ajax这瓶老酒经过时间的积淀和环境的变化,已经更加醇香,再加上美观实用的新包装,它的人气这么旺,可以说是顺理成章。
实际上我们从界面上看到的只是一部分,Ajax带给我们的远不只是这些。到Google Maps、Google Suggest和Gmail上亲身感受一下,你会有更深体会。
你是不是有这样一些问题:
·Ajax是什么?新名词?杂烩汤?还是……
·用Ajax到底能做什么?制作漂亮界面?改善用户体验?还有……
·怎么实现Ajax?XMLHttpRequest对象是什么?怎么避免页面完全刷新?……
·Ajax最适用哪些情况?完成验证?建立自动刷新页面?还有……
·Ajax有没有帮手?可以用哪些工具和技术简化Ajax开发?
·能在Ajax开发应用测试驱动开发吗?怎么做呢?
·JavaScript也能轻松地调试吗?有哪些调试工具?这些工具好用吗?
·有哪些可用的Ajax框架?Ajax框架对Ajax开发有多大作用?
本书能够帮助你回答这些问题。相信通过阅读本书,你能轻松地迈进Ajax殿堂,让你的老板、用户对你刮目相看!
我们深深地感谢我们的家人和朋友。在翻译过程中,他们给予了我们莫大的关心、支持和帮助。
全书由金灵主译,苏金国、徐阳、刘鑫、蔡洪亮等检查术语,刘晓兵、荆涛、张野、任岗、伊瑞海等提供技术问题支持,在大家的努力下共同完成了本书的翻译工作。
由于时间仓促,且译者的水平有限,译文中难免会出现一些错误,请读者批评指正。
译者
2005.12
Ryan Asleson,资深Web开发人员、对Javascript和Web开发工具有着丰富的经验。他是基于J2EE的Ajax开源框架Taconite的创始开发者之一。他的兴趣还包括性能优化和基于标准的开发。
Nathaniel T.Schutta,资深Java Web开发人员。他拥有明尼苏达大学软件工程硕士学位,并通过了SCWCD认证。他特别关注用户界面设计,是ACM人机交互特殊兴趣小组的资深成员。
几年前开始构建Web应用时,我们感觉这简直就是软件开发的“圣杯”。以前,我们一直开发的都是胖客户应用,公司每次发布这种公司应用的新版本时,总是需要将这种应用部署到分散在全国各地的数百个用户那里去,让我们沮丧的是,这种复杂的安装过程不仅冗长而且很容易出错,不仅让开发人员很头疼,用户也非常不满。
通过浏览器来部署应用,这看上去相当不错,因为这样,就不再需要在客户端上安装软件了。所以,与许多其他公司一样,我们公司也很快转型,开始在Web上部署应用。
尽管部署起来相对容易,但Web应用也有自己的问题。在用户看来,最突出的问题是用户界面没有了以往丰富的交互性。Web应用仅限于使用HTML提供的一组基本部件,而这是很有限的。更糟糕的是,与服务器交互需要完全刷新页面,很多用户已经熟悉了功能强大的客户—服务器应用,对他们来说,这一点很让人不快。
我们曾经一直认为,在Web应用中只要刷新页面就必须完全刷新,好像这是在所难免的,所以往往想方设法地避免页面刷新。我们甚至还考虑过编写一个Java applet,由它处理浏览器和服务器之间的通信。不过,随着越来越多Web应用的部署,我们很快发现,用户已经习惯了这种完全页面刷新的方式,这么一来,我们也不再那么强烈地想要另辟蹊径了。
转眼5年过去了。由于Google Suggest和Gmail等应用的出现,甚至在Ajax这个术语出现之前,这种使用XMLHttpRequest对象在浏览器和服务器之间完成异步通信的方法就已经在开发者社区中产生了很大反响。多年之前,IE中就已经使用了XMLHttpRequest对象,但是如今它得到了更多其他浏览器的支持,取得了重大突破。我们在一个正在开发的应用中增加了Ajax功能,结果令我们震憾不已,所以我们都产生了一种想法:“嘿,应该有人来写一本有关Ajax的书呀。”本书因此应运而生。
本书概述
本书旨在为开发人员介绍为已有的或者将来的新应用增加Ajax技术所需的所有工具。在写作中我们牢记:“你需要知道的我们都要介绍,你不需要知道的我们绝口不提。”我们认为,作为本书的读者,你应该已经是一个有经验的Web应用开发人员。正因如此,我们会把重点放在你很可能不了解的新内容上:Ajax及相关的工具和技术。我们不会花大量篇幅来讲述服务器端语言,因为我们认为你会自己选择工具集来开发服务器端功能,在这方面你不需要我们的帮助。另外我们也不会浪费时间来讨论如何构建企业级应用,这样的应用很少使用Ajax。相反,重申一次,我们的重点只是Ajax以及相关的工具和技术。
本书中的示例特意做得很小,而且很紧凑。它们会尽可能简洁地展示一个或两个重要的Ajax概念。我们认为,作为一个有经验的Web开发人员,你应该能熟练地把我们展示的内容推广到自己的环境中去,因此,我们不会在示例中“堆放”对你没有多大用处的信息。
第1章讨论了Web应用开发的发展历程,从过去谈到现在,并且预测了将来。如果你了解了Web开发技术的过去,就能更容易地认识到它们将来会有怎样的发展。
第2章介绍了XMLHttpRequest对象。这个Ajax概念你可能不太熟悉,所以我们专门用一章来解释XMLHttpRequest对象的属性和方法。也许你像我们一样,直到最近才注意到XMLHttpRequest对象。不过,要知道早在几年前IE中就已经有了XMLHttpRequest对象。因此,我们会用充分的笔墨讨论XMLHttpRequest对象,并说明它能做什么。
第3章开始讲述Ajax的具体内容。这一章将讨论XMLHttpRequest对象用来与服务器通信的各种方法。我们讨论了可以使用XML、纯文本甚至JavaScript Object Notation (JSON)作为传输介质,并介绍了它们与XMLHttpRequest对象结合使用的各种方式。在这一章的最后,你就能熟练地使用XMLHttpRequest对象与服务器端通信,而不必让用户苦苦等待页面完全刷新了。
作为开发人员,我们总是花很多时间学习新技术,但并不知道怎么实际应用。第4章将针对这个问题展示一系列可以使用Ajax技术的场合。如前所述,每个示例都很小、很紧凑,这样你能更好地理解相应内容,而不用在大堆不必要的信息中搜寻。
第5、6和7章对于Ajax新手来说尤其重要。我们不希望你仓促上阵,应该先配备好合适的工具和技术,再考虑在应用中增加Ajax。利用第5章介绍的工具和技术,可以简化Web应用的开发,你可以得到高质量、遵循行业标准而且将来更易于维护的代码。
测试驱动开发(Test-driven development,TDD)使我们开发应用的方法发生了根本性的改变。在编写代码之前先编写单元测试,这样就能确保所写的代码会正常工作,并能大大提高代码的质量。利用一个单元测试集,可以确保做出修改后所有代码还能按预期的那样工作,这样将来进行修改将更容易。Ajax当然也应该使用TDD,而且TDD的好处再强调也不为过,所以我们专门用一章来讨论。由于Ajax主要是一个基于浏览器的技术,第6章将展示如何对JavaScript代码应用TDD。
谈到JavaScript,如果你想使用Ajax,就必须至少用JavaScript写过一些程序。许多开发人员都不喜欢JavaScript,认为它缺少一些重要的生产性工具,如调试器,所以没有多大的用处。如今这种说法已经不成立了。第7章讨论了一些调试工具和技术,如果出现问题,你可以用这些工具和技术来跟踪,使得问题可以尽快、尽可能容易地加以解决。你不用再担心在使用JavaScript时出现问题而不能诊断,也不用因此对JavaScript退避三舍。
Ajax是一个发展迅猛的技术,在写本书期间,Ajax已经得到了飞速的发展。第8章把所有的内容综合在一起,讨论了新兴的Ajax开发模式和框架,并提供了一些在线资源。另外,第8章还给出了一个完整的示例,不仅显示了一些高级的Ajax技术,还展示了使用现成的Ajax框架来完成Ajax开发是何等容易。通过使用框架,你不用再做Ajax开发的一些繁琐任务,这样就能把重点集中在业务逻辑上,而不是Ajax的细节上。
最后,附录A描述了不同浏览器上W3C DOM和JavaScript实现中存在的一些特异之处和不一致的地方,并提供了一些方法来解决这些问题。附录B总结了最流行的Ajax框架和库,这些框架和库有助于简化Ajax技术的使用。随着Ajax越来越流行,框架也肯定会越来越多,所以让我们对新的框架和其他开发工具拭目以待。
本书源代码
本书中的所有示例都可以从Apress网站的源代码(Source Code)部分免费得到。在浏览器地址栏中输入www.apress.com,点击Source Code链接,在列表中找到Foundations of Ajax,也可以从Apress网站的本书主页下载源代码(zip文件)。源代码是按章组织的。
本书的更新信息
尽管我们尽了最大努力,但是你可能还会在书中偶尔发现一些错误,当然我们希望不会这样!如果正文或者源代码中还有错误,对此我们表示歉意。可以从Apress网站的本书主页上得到最新的勘误表,在那里还会提供我们的联系信息,如果你发现了错误,可以通知我们。
联系我们
我们非常重视你对本书内容和源代码示例的疑问和建议。请把所有问题和建议直接发到foundationsofajax@gmail.com,我们会尽快回复。不过要记住,我们(像你一样!)不可能马上就有回应。
谢谢你购买了这本书!我们希望你认为这是一本有价值的书,能像我们写书一样兴趣盎然地阅读这本书。
Ryan Asleson和Nathaniel T. Schutta
无封面