分享
 
 
 

Ajax实战:实例详解

王朝百科·作者佚名  2012-04-29
窄屏简体版  字體: |||超大  

图书信息书名: Ajax实战:实例详解

[1]

书号: 978-7-115-18765-9/TP

原书名: Ajax in Practice

原出版社: Manning Publications

丛书名: 图灵程序设计丛书

分类: 计算机 >> Web编程与设计 >> JavaScript

作者: Dave Crane, Jord Sonneveld, Bear Bibeault, Ted Goddard, Chris Gray, Ram Venkataraman, Joe Walker

译者: 贺师俊 许超 金擘 等译 贺师俊 审校

出版日期: 2008-10-14

语种: 简体中文

开本: 16开

页数: 400

作者简介贺师俊,资深Web开发专家,对HTML、JavaScript以及Web标准有非常深刻的认识,翻译并审校了《Ajax实战:实例详解》一书。他在JavaEye等技术社区非常活跃,是网友公认的专家级人物。

摘要本书堪称Ajax 领域内的典范之作,深受读者好评。它以Ajax 的简要介绍开篇,然后以知识点为脉络, 讲述了几十个易于使用的、以解决方案为重点的实例,并针对每一个实例给出了详细的范例代码,可操作性极强。通过本书,读者可以学会如何实现富客户端用户界面,包括拖拽、实践性策略、有效导航、事件处理、表单项目验证、状态管理、Ajax 库的选择、访问第三方的开放网络服务接口,等等。最后,本书以一个妙趣横生且极其实用的mashup 实例结尾。

本书适合所有的现代Web 开发人员。

媒体评论“通过本书中的示例,我掌握了大量关于Ajax的核心技巧和高级JavaScript技术,绝对必读的Ajax著作!”.

——Javaranch

“我太喜欢这本书了。具体、实用,可以立刻付诸实践。我强烈推荐!”

——Amazon

目录第一部分Ajax基础

第1章拥抱Ajax2

1.1Ajax,一种颠覆性的技术3

1.1.1重新定义用户的工作流程3

1.1.2重新定义Web应用的架构4

1.2Ajax快速入门6

1.2.1XMLHttpRequest简介6

1.2.2实例化XMLHttpRequest7

1.2.3发送请求8

1.2.4处理响应9

1.2.5XMLHttpRequest的其他方法和属性10

1.3使用框架简化Ajax11

1.3.1用Prototype库中的Ajax.Request对象创建请求12

1.3.2简化Ajax响应15

1.4总结18

第2章Ajax的通信方式19

2.1在服务器端生成JavaScript19

2.1.1执行由服务器生成的代码19

2.1.2遵循代码生成的实践准则21

2.2JSON简介25

2.2.1在服务器上生成JSON26

2.2.2使用JSON往返传输数据29

2.3在Ajax中使用XML和XSLT33

2.3.1解析服务器生成的XML34

2.3.2用XSLT和XPath来更好地处理XML38

2.4在Web服务中使用Ajax43

2.5总结49

第3章面向对象的JavaScript与Prototype库50

3.1面向对象的JavaScript51

3.1.1对象的基本原理51

3.1.2函数是一等公民53

3.1.3对象构造器和方法58

3.1.4编写JavaScript类:一个按钮63

3.2Prototype程序库74

3.2.1常用的函数和扩展75

3.2.2对数组的扩展76

3.2.3Hash类78

3.2.4给函数绑定上下文对象79

3.2.5面向对象的Prototype80

3.2.6用Prototype重写Button类86

3.3总结89

第4章Ajax开源工具集90

4.1Dojo工具包90

4.1.1用Dojo进行异步请求91

4.1.2用Dojo自动对表单进行编组94

4.2Prototype96

4.2.1Prototype中的异步请求96

4.2.2用Prototype进行自动更新100

4.2.3用Prototype进行定期更新102

4.3jQuery104

4.3.1jQuery基础104

4.3.2用jQuery进行异步加载106

4.3.3用jQuery获取动态数据110

4.4DWR113

4.5总结120

第二部分Ajax最佳实践

第5章事件处理124

5.1事件处理模型125

5.1.1基本的事件处理注册125

5.1.2高级事件处理128

5.2Event对象与事件传播机制130

5.2.1Event对象130

5.2.2事件的传播131

5.3使用Prototype进行事件处理135

5.4事件类型137

5.4.1鼠标事件137

5.4.2键盘事件138

5.4.3change事件141

5.4.4页面事件142

5.5事件处理实践144

5.5.1在服务端验证文本字段144

5.5.2无需页面重新加载的表单元素提交方式148

5.5.3只提交发生改变的元素151

5.6总结153

第6章表单验证与提交154

6.1客户端表单验证154

6.1.1在客户端进行验证154

6.1.2即时验证159

6.1.3跨字段验证160

6.2投递数据166

6.2.1POST请求剖析167

6.2.2将数据投递到服务器168

6.2.3将表单数据投递到服务器171

6.2.4检测表单数据变化173

6.3总结179

第7章内容导航180

7.1网站导航原理180

7.1.1大海捞“针”180

7.1.2创造更好的“针”探182

7.1.3导航和Ajax184

7.2传统的Web导航185

7.2.1一个简单的导航菜单185

7.2.2DHTML菜单187

7.3借鉴桌面应用的导航设施190

7.3.1使用qooxdoo库实现Tab组件191

7.3.2qooxdoo工具栏和窗口193

7.3.3qooxdoo树组件196

7.4桌面应用和Web应用的折中200

7.4.1OpenRico库的Accordion控件200

7.4.2创建HTML友好的树控件203

7.5总结209

第8章处理后退、刷新和撤销210

8.1禁止用户访问浏览器的导航控件210

8.1.1移除浏览器导航工具栏210

8.1.2捕捉快捷键212

8.1.3禁止右键弹出上下文菜单212

8.1.4阻止用户导航历史记录或刷新页面212

8.2与浏览器导航控件协作216

8.2.1使用JavaScript内建的history对象216

8.2.2使用Hash对象实现书签217

8.2.3RSH框架介绍218

8.2.4使用RSH框架维护客户端状态219

8.2.5使用RSH在服务端维护应用程序状态222

8.3处理撤销操作227

8.3.1何时提供可撤销功能227

8.3.2实现一个可撤销/恢复操作栈227

8.3.3扩展撤销栈以支持更复杂的用户操作232

8.4总结240

第9章拖放241

9.1支持拖放的JavaScript框架242

9.2Ajax应用中的拖放243

9.2.1支持拖放的Ajax购物车示例243

9.2.2拖放列表中的数据操纵249

9.2.3使用ICEfaces创建Ajax购物车253

9.3总结261

第10章对用户友好一点262

10.1与延迟作斗争263

10.1.1以反馈来应对等待263

10.1.2显示进度268

10.1.3Ajax请求超时273

10.1.4处理多次点击275

10.2预防和检测输入错误278

10.2.1主动显示上下文帮助278

10.2.2对表单输入项进行有效性验证283

10.3维护焦点和分层顺序290

10.3.1维护焦点顺序290

10.3.2管理堆叠顺序294

10.4总结299

第11章状态管理和缓存300

11.1客户端状态的维持301

11.2服务器数据缓存303

11.2.1Java类的数据的交换303

11.2.2预取310

11.3客户端状态的持久化313

11.3.1以JSON形式存储和取回用户状态313

11.3.2通过AMASS保存JSON字符串315

11.4总结319

第12章开放式Web API和Ajax320

12.1Yahoo!开发者网络321

12.1.1Yahoo!地图321

12.1.2跨服务器代理324

12.1.3Yahoo! Maps Geocoding331

12.1.4Yahoo!交通335

12.2Google搜索API340

12.3Flickr图片分享349

12.3.1Flickr用户内部标识350

12.3.2Flickr图片和缩略图353

12.4稍等!据说,还有很多……357

12.4.1Amazon服务357

12.4.2eBay服务357

12.4.3MapQuest357

12.4.4NOAA/国家气象服务358

12.4.5更多Web服务接口358

12.5总结358

第13章使用Ajax进行混搭359

13.1Trip-o-matic应用简介359

13.1.1应用的目的359

13.1.2应用概览和需求360

13.2Trip-o-matic的数据文件360

13.2.1我们应该采用什么格式361

13.2.2旅行数据格式361

13.2.3设置Flickr照片集363

13.3TripomaticDigester类363

13.3.1依赖性检查364

13.3.2TripomaticDigester的构造器364

13.3.3解读旅行数据365

13.3.4加载经典信息366

13.3.5收集元素的文本内容367

13.4Tripomatic应用类368

13.4.1Tripomatic类和构造器369

13.4.2创建内容元素370

13.4.3填充旅行数据372

13.4.4显示地图374

13.4.5加载缩略图375

13.4.6显示照片377

13.5Trip-o-matic应用页面378

13.5.1Trip-o-matic的HTML文档378

13.5.2样式之旅379

13.6总结381

前言Web始终都是催生创新的温床,在它不长的历史里,以某项创造为基础进行重造和重用,以致在某些方面远远超出原始发明者意图的例子比比皆是。例如,CGI取代了一种基于网络的文档检索协议,同时又提供了从后台数据库中取得数据并(根据实时请求)动态生成文档的能力;HTTP首部被用来在无状态协议之上提供持续的用户会话,这使预订系统和电子商务等有状态应用成为可能;在核心协议上创建的加密层,给那些网上商店的顾客和业务应用的用户以信心。

这些突破性的技术永久地改变了人们使用Web的方式。时至今日,诸如服务器端页面、用户会话以及SSL等技术只是构建Web应用的日常构件,并成为所有Web开发人员工具箱里的必备,以至于我们认为这是理所当然的。然而,Web创新的步伐仍然没有停止,几乎每周都会有新的Web框架出现。

Ajax是近年来Web开发领域最大的突破性技术之一。先前的所有创新对Web用户界面(点击、发送请求、响应、重绘页面)的基本模式没有多大影响,直到XMLHttpRequest(XHR)对象1999年悄然出现在IE 5中时,这一状况才结束。该对象的使用最初是为了增强Outlook Web Access客户端程序,并未引起太大的关注。

2005年,当Google举起Ajax的旗帜开发邮件(Gmail)、地图和Suggest等应用时,人们才开始猛然醒悟,关注起Ajax来。来自Adaptive Path公司的Jesse James Garrett提出了“Ajax”这一术语,树起一面大旗,人们云集旗下讨论Ajax究竟是什么,可以用它做什么。

Ajax好像只是在等待一个名字,一旦有了,一系列令人兴奋的活动接踵而至,而人们也开始研究Ajax的技术本质。Ajax引入了一种创建Web应用的全新的方式。尽管这也导致有许多新的问题亟待解决,但随着Web开发社区不断突破新的极限,过去两年爆发了新一轮创新热潮。

沿着这种发展路线,Ajax的基础(例如XMLHttpRequest对象)将重复服务器端页面、用户会话以及SSL的道路。处于集体无意识的Web开发社区犹如神助,一下子明白了Ajax技术的根本,并转向如何解决使用中产生的更广泛的问题。

为解决这些问题,我们决定撰写本书。我们希望本书能帮助熟练的和不那么熟练的Web开发者完全掌握Ajax技术并成功创建其自己的Ajax应用。它可以看作是第二代Ajax图书:第一代Ajax图书介绍Ajax是什么,而第二代Ajax图书介绍可以用它做什么以及如何做。

本书从Manning出版社联系Steve Benfield并希望他成为第二代Ajax图书的主编开始启动,可以看作是Dave Crane所著畅销书《Ajax实战》的后续之作。后来,Steve因故不再担任主编,于是Jord Sonneveld、Bear Bibeault和Dave Crane携手为你奉献了本书。

当你看完前言,我们就完成了自己的任务,因此可以坐下来分享几杯早该享用的饮料。我们希望你在阅读本书时能获得和我们写作本书时一样多的乐趣!

关于本书

Ajax席卷了Web开发社区,它使Web开发人员得以创建以客户为中心的富因特网应用。不过它也给这些应用带来了新的复杂性和多样性。本书抓住Ajax的核心内容,提供了大量实践性技巧和可重用的代码,以帮助开发者解决创建Ajax解决方案时遇到的具体问题。

简要介绍Ajax之后,本书将带领读者领略几十个易于使用的、以解决方案为重点的示例。读者可以学会如何实现富客户端用户界面,包括拖拽实践性策略、有效导航、事件处理、表单项验证、状态管理、如何选择Ajax库、访问第三方的开放WebAPI等实用策略。

与传统的“cookbook”类图书不同,本书提供对各个技巧的深入讨论并演示如何将这些独立的组件连接起来,以创建强大的应用解决方案。本书结尾一章是令人愉快的“混搭(mashup)”,之所以选择该示例,是因为它有趣、好玩,更重要的是它很实用。

本书将帮助你:

□超越Ajax本身并学习如何让Ajax运行起来;

□掌握许多用户界面设计和站点导航的技巧;

□动手实践专业级的可重用的Ajax代码以解决实际问题。

读者对象

本书针对那些希望借助Ajax技术创建最佳富用户界面应用的Web开发人员。

Ajax初学者会发现入门的前两章对快速了解异步请求的知识有帮助,但本书面向的主要读者是开发人员,他们应当至少有基本的Web应用开发背景并能使用基础的JavaScript语法实现一些客户端特效。

在前所未有的富客户端用户界面应用里,客户端代码数量迅速增多,因此这部分代码应和服务端代码同样得到重视。本书介绍了一些高级的JavaScript技巧帮助你组织客户端代码并有效使用Ajax。

如果你不仅对使用新技术扩展自身编码能力感兴趣,同时也关注如何应用编程技巧和模式来最好地利用这些技术,我们认为本书能满足你的这些需求。

无论你是老练的客户端开发人员,还是刚开始创建拥有富用户界面的新手,我们都希望本书对你能有所帮助。

阅读路线图

本书分为两部分。第一部分:“Ajax基础”,包含4章导读性的内容,以确保你在学习本书第二部分时已经消化掌握了这些技巧。第二部分“Ajax最佳实践”,每章都讲解了客户端编程的各种实践性主题。它们或强调直接使用Ajax,或强调在支持Ajax的应用中运行良好的实践和原则。

第1章深入探讨Ajax与其他技术的区别,并介绍为何有如此多的内容需要学习。本章提供了一个快速教程介绍如何跨浏览器使用Ajax以及如何处理到来的响应。最后介绍Prototype库如何确保整个过程更加流畅。

第2章讨论了Ajax通信的各种方式,包括JSON、XML和XSLT。我们还研究了Ajax与SOAP Web 服务的结合使用。

第3章介绍了怎样使用面向对象的JavaScript来控制典型的Ajax应用都具备的客户端源代码增长问题。我们介绍的主要概念有对象构造、函数是一等对象、函数是类方法、函数上下文以及闭包等,并在面向对象技术的背景下加以介绍。最后介绍了如何使用Prototype库帮助我们轻松定义JavaScript类。

第4章继续讨论支持Ajax的JavaScript库并进一步讲解Prototype、Dojo工具箱、jQuery和DWR库,虽然不可能完全地介绍这些库具备的各种特性,但我们特别介绍了它们给Ajax带来的变化。我们还会在接下来的章节的多个代码示例中看到这些库的实践用法。

第5章讲解事件处理,介绍了多种事件模型并特别强调了跨浏览器问题,并介绍了使用Prototype库以减轻跨浏览器带来的痛苦。还讨论了Ajax应用程序中最常用的事件类型。

第6章详细研究了表单数据项验证及其与上一章介绍的事件处理的联系。本章示例采用Prototype和jQuery库以获得最大好处。这些示例演示了如何截取表单提交(以前通常会引起整个页面刷新的操作)并把它重定向为不甚唐突的Ajax请求。

第7章讨论内容导航。讲解了创建简单的菜单,然后进入更加复杂的导航辅助设施如树视图、accordion控件、Tab视图和工具条等内容。我们还在本章给出了支持这些功能的OpenRico库和qooxdoo库的相关代码。

第8章关注用户在浏览器中点击后退和刷新按钮导致的问题。我们会从两个角度介绍:如何避免用户出现这些问题以及如何支持后退和刷新操作。本章还会介绍如何为应用程序添加一个简单的撤销功能。

第9章讨论拖放。我们将研究拖放操作的原理并讨论支持拖放的JavaScript库。我们会介绍如何使用Scriptaculous实现支持项目复制的列表,并用Scriptaculous和ICEfaces实现一个简单的购物车。

第10章讨论关于可用性的考虑,并介绍Ajax怎样帮助我们解决或至少减轻网络延时的问题。讨论了通过主动提供由服务器端协助完成的帮助减少用户的挫折感,并再次回顾了表单数据验证。我们还解释了在富用户界面中如何处理多控件Tab键次序以及多层控件次序问题。

第11章介绍状态管理。我们将探索如何维护客户状态、缓存数据、预加载数据和如何持久化客户状态。我们还讨论了使用AMASS库持久化大量数据。

第12章探讨第三方开放的API的用法。我们学习如何避免令人畏惧的“Ajax安全沙箱”使Ajax请求到达远程服务器,然后使用该技巧访问第三方开放的API,例如Yahoo!Maps、Geocoding和 Traffic、Google搜索引擎以及Flickr照片服务等。

第13章以一个完整的混搭式应用结束,它使用了上一章介绍的第三方开放API以及本书介绍的各种技巧来创建一个完整的且可以运行的混搭式应用。

代码约定

所有源代码清单或正文中的源代码都使用一种等宽字体(例如like this)以区别于普通文本。正文中的方法和函数名、对象属性、XML元素都用此类字体显示。

多数情况下,对源代码重新编排了格式。为适应本书的页面宽度,我们增加了换行并调整了缩进。在少数情况下,这样做还不够,源代码清单里还包括续行记号。另外,还从源代码清单中去掉了许多注释。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有