第1篇 准备篇 3
第1章 什么是Ajax 3
1.1 Ajax概述 4
1.1.1关键技术:XM.HttpRequest 4
1.1.2 Ajax名词的由来 4
1.2经典案例1:搜索关键词建议系统(Google Suggest) 5
1.3经典案例2:优秀的电子邮件服务系统(Gmail 7
1.3.1注册Gmail 7
1.3.2 Grmail主界面 9
1.3.3 Inbox(收件箱)工作区域 10
1.3.4 Web Clip(网络剪辑) 11
1.3.5邮件操作区域 11
1.3.6操作邮件 12
1.4第一个Ajax应用程序:Hello World! 13
1.5小结 14
第2篇 Ajax技术构成篇 17
第2章JavaScript: Ajax的开发语言 17
2.1 JavaScript概述 18
2.1.1对JavaScript的误解 18
2.1.2 Java5cript的版本 19
2.2数据类型和值 19
2.2.1数字 20
2.2.2字符串 20
2.2.3布尔值 21
2.2.4函数 22
2.2.5对象 23
2.2.6数组 24
2.2.7 null值 24
2.2.8 undefimed值 24
2.3 JavaScript的变量 25
2.3.1变量的类型 25
2.3.2变量的声明 25
2.3.3变量的作用域 26
2.3.4基本类型和引用类型 27
2.4表达式和运算符 28
2.4.1表达式 28
2.4.2算术运算符 28
2.4.3相等运算符 30
2.4.4关系运算符 31
2.4.5赋值运算符 33
2.4.6逻辑运算符 33
2.4.7字符串运算符 34
2.4.8其他运算符 34
2.5语句 34
2.5.1声明变量:var语句 35
2.5.2流程控制:if语句 35
2.5.3流程控制:elseif语句 37
2.5.4流程控制:switch语句 37
2.5.5循环:while语句 39
2.5.6循环:do/while语句 39
2.5.7循环:for语句 40
2.5.8遍历:for/in语句 41
2.5.9控制语句:break语句 41
2.5.10控制语句:continue语句 43
2.5.11函数语句:function语句 44
2.5.12函数返回值:retuun语句 44
2.5.13抛出异常:throw语句 45
2.5.14异常处理:try/catch/finally语句 45
2.5.15空语句 46
2.6 JavaScript的函数 46
2.6.1函数的定义和调用 47
2.6.2实际参数列表:arguments属性的使用 48
2.7大小写敏感性 49
2.8 JavaScript的注释 49
2.9 JavaScript的保留字 50
第3章JavaScript的常用对象 51
3.1保存多个数据元素的容器:Array对象 52
3.1.1数组的创建 52
3.1.2得到数组的长度 52
3.1.3添加、删除和替换数组元素 53
3.1.4得到数组片段 54
3.1.5反转数组 54
3.1.6将数组转换成字符串 54
3.1.7数组元素的排序 55
3.2字符串的处理:String对象 55
3.2.1获取字符串的长度 55
3.2.2字符串的截取 56
3.2.3字符串的替换 56
3.2.4大小写转换 56
3.2.5将字符串转换成数组 57
3.2.6拼接字符串的优化方法 57
3.3正则表达式:RegExp对象 58
3.3.1创建正则表达式 58
3.3.2正则表达式的语法规则 59
3.3.3正则表达式的属性 61
3.3.4用于模式匹配的String方法 62
3.3.5用于模式匹配的RegExp方法 63
3.3.6常用正则表达式 64
3.4日期和时间:Date对象 64
3.4.1 Date对象的创建 65
3.4.2读取和设置日期及时间的各个部分 66
3.4.3日期和时间的换算 69
3.5复杂的数学运算:Math对象 71
3.5.1小数的取整 71
3.5.2得到随机数 71
3.5.3幂运算 72
3.5.4最大值和最小值 72
3.6操作浏览器窗口:window对象 72
3.6.1使用对话框 72
3.6.2.改变窗口状态栏的信息 74
3.6.3延迟执行和定时执行 74
3.6.4 URL的获取和跳转 76
3.6.5历史记录的前进和后退 77
3.6.6控制窗口的大小和位置 81
3.6.7打开和关闭窗口 85
3.6.8获得焦点和失去焦点 88
3.6.9取得用户显示器的信息 88
3.6.10取得用户浏览器的信息 88
3.7操作HTML文档:document对象 89
3.7.1文档的输出 89
3.7.2文档的标题 90
3.7.3文档的图像 91
3.7.4文档的超链接 92
3.7.5文档的表单 93
3.8应用实例 94
3.8.1在网页上显示自动更新的日期和时间 94
3.8.2一个简单的小游戏:Lucky Seven(幸运7) 95
3.9小结 99
第4章DOM文档对象模型介绍 101
4.1基本概念 102
4.1.1树形结构 102
4.1.2结点的类型和组成 103
4.1.3结点之间的关系 103
4.2结点的引用 103
4.2.1根据id属性引用结点 104
4.2.2根据name属性引用结点 105
4.2.3根据标签名引用结点 106
4.2.4引用父结点 107
4.2.5引用子结点 108
4.2.6引用相邻的结点 110
4.3结点的操作 112
4.3.1创建元素结点 112
4.3.2创建文本结点 112
4.3.3添加结点 113
4.3.4插入子结点 116
4.3.5替换子结点 117
4.3.6复制结点 119
4.3.7删除子结点 120
4.3.8读取结点属性 124
4.3.9添加和修改属性结点 124
4.3.10删除属性结点 125
4.4控制元素的样式 125
4.4.1获取和设置元素的css类 125
4.4.2获取和设置元素样式 126
4.5事件处理 129
4.5.1事件模型和传播机制 129
4.5.2注册事件处理程序 130
4.5.3注销事件处理程序 134
4.5.4事件对象 136
4.5.5常用事件 139
4.6应用实例 140
4.6.1悬浮的广告 140
4.6.2可拖动的层 142
4.7小结 144
第5章 开发Ajax应用程序需要使用的工具 145
5.1开发工具:Aptana 146
5.1.1 Aptana的下载和安装 146
5.1.2 Aptana的界面介绍 146
5.1.3 Aptana的使用 148
5.1.4 Aptana的更新 157
5.1.5 Aptana的卸载 157
5.2 Firefox 158
5.2.1错误控制台:Error Console 158
5.2.2优秀的调试插件:Firebug 158
5.3 HTTP调试工具:Fiddler 165
5.3.1 Fiddler的下载和安装 166
5.3.2使用Fiddler 166
5.4小结 167
第3篇 Ajax应用技术分析篇 171
第6章Hello World!分析 171
6.1 XMLHttpRequest对象详解 172
6.1.1初始化请求 172
6.1.2设置请求的HTTP头信息 173
6.1.3发送请求 174
6.1.4获取请求的当前状态 176
6.1.5指定请求状态改变时的事件处理句柄 178
6.1.6返回当前请求的HTTP状态码 178
6.1.7从返回信息中获取指定的HTTP头 179
6.1.8获取返回信息的所有HTTP头 180
6.1.9取得返回的数据 181
6.1.10取消当前请求 183
6.2搭建基本的Ajax开发框架 183
6.2.1创建XMLHttpRequest对象 183
6.2.2发送请求和回调函数 184
6.2.3一个封装好的基本Ajax应用程序开发框架 186
6.3小结 191
第7章 完善的Ajax应用程序:Ajax留言本 193
7.1留言本的需求 194
7.2留言本的基本设计 194
7.2.1系统环境 194
7.2.2留言的数据和操作 194
7.2.3数据库设计 195
7.2.4后台功能模块 195
7.2.5前台脚本功能模块 195
7.2.6系统文件结构和文件清单 196
7.3留言本的实现 196
7.3.1创建数据库 196
7.3.2完成前台界面:index.html 197
7.3.3完成前台界面:样式表 197
7.3.4完成后台功能模块:数据库操作模块 199
7.3.5完成后台功能模块:留言本逻辑处理模块 203
7.3.6完成后台功能模块:接口模块 205
7.3.7完成前台功能模块:基本Ajax功能模块 205
7.3.8完成前台功能模块:读取和发送留言 208
7.3.9整合留言本程序 211
7.4留言本的功能测试 212
7.5小结 214
第8章 调试技巧 215
8.1深入解析Firebug的调试功能 216
8.1.1检查常规错误 216
8.1.2完善的log功能 219
8.1.3控制台的命令行功能 234
8.1.4断点、单步执行和变量信息 236
8.1.5在其他浏览器中使用Firebug的控制台 239
8.1.6屏蔽测试代码 241
8.2使用Aptana的集成调试功能 241
8.2.1配置集成调试环境 241
8.2.2启动调试 242
8.2.3断点、单步执行和变量信息 244
8.2.4使用console.log和dump输出文本信息 246
8.2.5使用aptana.trace输出调用堆栈信息 247
8.2.6使用断言 248
8.2.7屏蔽调试代码 249
8.3小结 250
第9章 常见问题 251
9.1编码的处理 252
9.1.1文件编码与声明编码 252
9.1.2 Ajax请求乱码 253
9.1.3发送数据乱码 254
9.2控制缓存 256
9.3选择合适的请求方式 257
9.4控制多个Ajax请求 258
9.4.1轮询模式 258
9.4.2事件响应模式 259
9.5Ajax请求的安全性 260
9.5.1身份验证 260
9.5.2防范SQL注入 260
9.5.3防范JavaScrypt注入 261
9.6小结 261
第4篇 Ajax应用进阶篇 265
第10章 数据的组织方式:XML 265
10.1 XML概述 266
10.2 XML语法规范 266
10.2.1 XML声明 267
10.2.2根节点 267
10.2.3开始和结束标记 267
10.2.4属性 267
10.2.5合理地嵌套包含 268
10.2.6大小写敏感性 268
10.2.7空白被保留 268
10.2.8 XM的注释 268
10.2.9元素的命名 269
10.2.10转义字符 270
10.2.11 CDATA部件 270
10.3 XML命名空间 271
10.4 XML Schema 272
10.4.1基本示例 273
10.4.2定义元素 276
10.4.3简单类型 276
10.4.4复合类型 278
10.4.5定义属性 279
10.4.6默认值 279
10.4.7约束特殊值 280
10.4.8列表类型 280
10.4.9联合类型 281
10.4.10匿名类型定义 281
10.4.11简单的复合类型 283
10.4.12混合内容 283
10.4.13任意类型 284
10.4.14分组和引用 284
10.4.15 命名冲突 285
10.4.16关联XML与XML Schema 286
10.5 XML DOM 287
10.5.1创建XML DOM对象 287
10.5.2加载XML文档 287
10.5.3加载XML片段 294
10.5.4取得XML内容 296
10.6强大的检索工具:XPath 297
10.6.1基本示例 297
10.6.2选取节点 306
10.6.3谓语 306
10.6.4通配符 307
10.6.5使用多个路径 307
10.6.6坐标轴 307
10.6.7运算符 308
10.6.8路径表达式的步语法 308
10.6.9 XPath函数 309
10.7格式化XML工具:XSL 309
10.7.1基本示例 310
10.7.2 XSL声明 313
10.7.3使用模板 313
10.7.4取得数据 316
10.7.5使用for-each元素代替模板 316
10.7.6使用sort元素进行排序 318
10.7.7流程控制 319
10.7.8创建元素和属性 320
10.7.9指定输出格式 321
10.8在客户端格式化XML 322
10.9跨浏览器的XML开发框架:zXML 326
10.10应用实例:Ajax文章列表程序(XML 341
10.10.1确认需求 341
10.10.2系统设计 341
10.10.3系统实现:创建数据库 343
10.10.4系统实现:完成后台模块 343
10.10.5系统实现:完成前台界面 347
10.10.6系统实现:完成前台模块 351
10.10.7系统实现:编写xsl样式表 357
10.10.8整合系统 358
10.10.9系统测试 359
10.11小结 363
第11章 数据的组织方式:JSON 365
11.1 JSON的语法结构 366
11.1.1 JSON的基本结构 366
11.1.2 JSON中值的类型 367
11.2 JSON的语言支持 369
11.2.1在JavaScript中读取JSON数据 369
11.2.2在JavaScript中输出JSON数据 371
11.2.3在PHP中使用JSON 378
11.2.4在C#中输出JSON数据 380
11.2.5在C#中输出带类型说明的JSON数据 384
11.2.6在C#中读取JSON数据 389
11.2.7更多语言支持 393
11.3 JSON的优点和不足 393
11.3.1 JSON的优点 394
11.3.2 JSON的不足 395
11.4将XML转换为JSON 395
11.5小结 399
第12章JavaScript面向对象编程(OOP) 401
12.1 JavaScript中的类 402
12.1.1创建类 402
12.1.2类的属性 402
12.1.3类的方法 403
12.1.4公有属性和私有属性 403
12.1.5公有方法和私有方法 405
12.1.6静态属性和静态方法 406
12.1.7原型对象prototype 406
12.2 JavaScript中的继承 407
12.2.1对象冒充 407
12.2.2使用对象冒充实现继承 408
12.2.3继承原型对象中的属性和方法 409
12.2.4封装继承方法 410
12.3更多技巧 411
12.3.1属性的封装 411
12.3.2实现多态 412
12.3.3命名空间 413
12.3.4实现短类名 414
12.4使用JSVM进行代码组织 416
12.4.1下载和配置JSVM 416
12.4.2路径和文件名的约定 417
12.4.3编写类 417
12.4.4类的按需加载 418
12.4.5在类中引用其他类 419
12.5小结 420
第13章 跨浏览器的兼容性问题 421
13.1使用getElementById代替idName 422
13.2表单元素的引用问题 423
13.3访问集合对象成员的问题 425
13.4读取自定义属性的问题 426
13.5常量的定义问题 427
13.6 input元素的type属性读写问题 428
13.7模态窗口的问题 429
13.8 frame的操作问题 431
13.9 innerText的问题 433
13.10对父元素的引用问题 436
13.11 getElementsByName的问题 436
13.12 outerText的问题 438
13.13 outerHTML的问题 440
13.14小结 442
第14章Prototype.js框架介绍 443
14.1 Prototype js常用方法介绍 444
14.1.1使用$方法代替document.getElementByld 444
14.1.2使用$$方法获得元素引用 444
14.1.3根据css类名取得元素集合 444
14.1.4使用Try.these尝试运行多个函数 446
14.1.5使用$F方法来获得表单元素的值 446
14.1.6数组迭代的简化方法 447
14.1.7设置元素的样式 447
14.1.8切换元素的隐现状态 448
14.1.9序列化表单值 449
14.1.10转换HTML标签 451
14.2基于Prototypejs的类和继承 452
14.2.1使用Class.create()创建类 452
14.2.2 Prototype js中的继承 453
14.3 Prototype js中的事件处理 454
14.3.1注册事件处理函数 454
14.3.2注销事件处理函数 455
14.4 Prototypejs的Ajax功能 456
14.4.1 Ajax.Request方法详解 457
14.4.2用Ajax.Updater更新界面 459
14.4.3用Ajax.PeriodicalUpdater定时更新界面 460
14.4.4使用Form.request方法无刷新提交表单 460
14.5基于Prototype.js的留言本程序 462
14.6小结 465
第15章 关于架构的思考 467
15.1 REST架构模式 468
15.2 Web应用程序的发展史 468
15.2.1提供静态文档的Web站点 469
15.2.2早期的动态Web应用程序 469
15.2.3融入式Web应用程序 470
15.3 Ajax为REST带来新的契机 470
15.3.1缓存Ajax程序引擎 471
15.3.2缓存Ajax数据 471
15.4小结 471
第16章Ajax的缺陷及补救 473
16.1搜索引擎的收录问题 474
16.1.1问题产生的原因 474
16.1.2解决办法 474
16.2前进和后退的问题 483
16.2.1问题产生的原因 483
16.2.2 Firefox下的解决办法 483
16.2.3在lE下的解决办法 489
16.3小结 495
第5篇 Ajax实战篇 499
第17章 Ajax高级表单验证程序 499
17.1确定需求 500
17.2基本设计 500
17.3代码实现 501
17.3.1实现EventManager类 501
17.3.2实现Request类 503
17.3.3实现Validator类 506
17.3.4实现FormItemValidator类 510
17.3.5实现FormValidator类 514
17.4测试 517
第18章Ajax动态联动菜单 523
18.1确定需求 524
18.2基本设计 524
18.3实例代码 524
18.4测试 528
第19章Ajax聊天室 535
19.1确定需求 536
19.2基本设计 536
19.2.1系统结构 536
19.2.2实体及数据库设计 537
19.2.3后台功能模块 537
19.2.4请求控制器 537
19.2.5前台界面 537
19.2.6前台功能模块 538
19.3实例代码 539
19.3.1建立数据库 539
19.3.2实现后台功能模块 540
19.3.3请求控制器 547
19.3.4界面HTM.和CSS代码 548
19.3.5前台功能模块 551
19.3.6加入表情图标 564
19.3.7整合程序 565
19.4测试 567
附录A JavaScript速查手册 571
附录B HTML DOM速查手册 589
附录C Prototype速查手册 608