目 录
第1篇 准备篇
第1章 什么是Ajax 3
1.1 Ajax概述 4
1.1.1 关键技术:XMLHttpRequest 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 Gmail主界面 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技术构成篇
第2章 JavaScript:Ajax的开发语言 17
2.1 JavaScript概述 18
2.1.1 对JavaScript的误解 18
2.1.2 JavaScript的版本 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 undefined值 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 流程控制:else if语句 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 函数返回值:return语句 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应用技术分析篇
第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.5 Ajax请求的安全性 260
9.5.1 身份验证 260
9.5.2 防范SQL注入 260
9.5.3 防范JavaScript注入 261
9.6 小结 261
第4篇 Ajax应用进阶篇
第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 XML的注释 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
.getElementById 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 基于Prototype.js的类和继承 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 Prototype.js的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 在IE下的解决办法 489
16.3 小结 495
第5篇 Ajax实战篇
第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 界面HTML和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