图书目录

目    录

第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