第一部分 Ajax基础
第1章 拥抱Ajax
1.1 Ajax,一种颠覆性的技术
1.1.1 重新定义用户的工作流程
1.1.2 重新定义Web应用的架构
1.2 Ajax快速入门
1.2.1 XMLHttpRequest简介
1.2.2 实例化XMLHttpRequest
1.2.3 发送请求
1.2.4 处理响应
1.2.5 XMLHttpRequest的其他方法和属性
1.3 使用框架简化Ajax
1.3.1 用Prototype库中的Ajax.Request对象创建请求
1.3.2 简化Ajax响应
1.4 总结
第2章 Ajax的通信方式
2.1 在服务器端生成JavaScript
2.1.1 执行由服务器生成的代码
2.1.2 遵循代码生成的实践准则
2.2 JSON简介
2.2.1 在服务器上生成JSON
2.2.2 使用JSON往返传输数据
2.3 在Ajax中使用XML和XSLT
2.3.1 解析服务器生成的XML
2.3.2 用XSLT和XPath来更好地处理XML
2.4 在Web服务中使用Ajax
2.5 总结
第3章 面向对象的JavaScript与Prototype库
3.1 面向对象的JavaScript
3.1.1 对象的基本原理
3.1.2 函数是一等公民
3.1.3 对象构造器和方法
3.1.4 编写JavaScript类:一个按钮
3.2 Prototype程序库
3.2.1 常用的函数和扩展
3.2.2 对数组的扩展
3.2.3 Hash类
3.2.4 给函数绑定上下文对象
3.2.5 面向对象的Prototype
3.2.6 用Prototype重写Button类
3.3 总结
第4章 Ajax开源工具集
4.1 Dojo工具包
4.1.1 用Dojo进行异步请求
4.1.2 用Dojo自动对表单进行编组
4.2 Prototype
4.2.1 Prototype中的异步请求
4.2.2 用Prototype进行自动更新
4.2.3 用Prototype进行定期更新
4.3 jQuery
4.3.1 jQuery基础
4.3.2 用jQuery进行异步加载
4.3.3 用jQuery获取动态数据
4.4 DWR
4.5 总结
第二部分 Ajax最佳实践
第5章 事件处理
5.1 事件处理模型
5.1.1 基本的事件处理注册
5.1.2 高级事件处理
5.2 Event对象与事件传播机制
5.2.1 Event对象
5.2.2 事件的传播
5.3 使用Prototype进行事件处理
5.4 事件类型
5.4.1 鼠标事件
5.4.2 键盘事件
5.4.3 change事件
5.4.4 页面事件
5.5 事件处理实践
5.5.1 在服务端验证文本字段
5.5.2 无需页面重新加载的表单元素提交方式
5.5.3 只提交发生改变的元素
5.6 总结
第6章 表单验证与提交
6.1 客户端表单验证
6.1.1 在客户端进行验证
6.1.2 即时验证
6.1.3 跨字段验证
6.2 投递数据
6.2.1 POST请求剖析
6.2.2 将数据投递到服务器
6.2.3 将表单数据投递到服务器
6.2.4 检测表单数据变化
6.3 总结
第7章 内容导航
7.1 网站导航原理
7.1.1 大海捞“针”
7.1.2 创造更好的“针”探
7.1.3 导航和Ajax
7.2 传统的Web导航
7.2.1 一个简单的导航菜单
7.2.2 DHTML菜单
7.3 借鉴桌面应用的导航设施
7.3.1 使用qooxdoo库实现Tab组件
7.3.2 qooxdoo工具栏和窗口
7.3.3 qooxdoo树组件
7.4 桌面应用和Web应用的折中
7.4.1 OpenRico库的Accordion控件
7.4.2 创建HTML友好的树控件
7.5 总结
第8章 处理后退、刷新和撤销
8.1 禁止用户访问浏览器的导航控件
8.1.1 移除浏览器导航工具栏
8.1.2 捕捉快捷键
8.1.3 禁止右键弹出上下文菜单
8.1.4 阻止用户导航历史记录或刷新页面
8.2 与浏览器导航控件协作
8.2.1 使用JavaScript内建的history对象
8.2.2 使用Hash对象实现书签
8.2.3 RSH框架介绍
8.2.4 使用RSH框架维护客户端状态
8.2.5 使用RSH在服务端维护应用程序状态
8.3 处理撤销操作
8.3.1 何时提供可撤销功能
8.3.2 实现一个可撤销/恢复操作栈
8.3.3 扩展撤销栈以支持更复杂的用户操作
8.4 总结
第9章 拖放
9.1 支持拖放的JavaScript框架
9.2 Ajax应用中的拖放
9.2.1 支持拖放的Ajax购物车示例
9.2.2 拖放列表中的数据操纵
9.2.3 使用ICEfaces创建Ajax购物车
9.3 总结
第10章 对用户友好一点
10.1 与延迟作斗争
10.1.1 以反馈来应对等待
10.1.2 显示进度
10.1.3 Ajax请求超时
10.1.4 处理多次点击
10.2 预防和检测输入错误
10.2.1 主动显示上下文帮助
10.2.2 对表单输入项进行有效性验证
10.3 维护焦点和分层顺序
10.3.1 维护焦点顺序
10.3.2 管理堆叠顺序
10.4 总结
第11章 状态管理和缓存
11.1 客户端状态的维持
11.2 服务器数据缓存
11.2.1 Java类的数据的交换
11.2.2 预取
11.3 客户端状态的持久化
11.3.1 以JSON形式存储和取回用户状态
11.3.2 通过AMASS保存JSON字符串
11.4 总结
第12章 开放式Web API和Ajax
12.1 Yahoo!开发者网络
12.1.1 Yahoo!地图
12.1.2 跨服务器代理
12.1.3 Yahoo! Maps Geocoding
12.1.4 Yahoo!交通
12.2 Google搜索API
12.3 Flickr图片分享
12.3.1 Flickr用户内部标识
12.3.2 Flickr图片和缩略图
12.4 稍等!据说,还有很多
12.4.1 Amazon服务
12.4.2 eBay服务
12.4.3 MapQuest
12.4.4 NOAA/国家气象服务
12.4.5 更多Web服务接口
12.5 总结
第13章 使用Ajax进行混搭
13.1 Trip-o-matic应用简介
13.1.1 应用的目的
13.1.2 应用概览和需求
13.2 Trip-o-matic的数据文件
13.2.1 我们应该采用什么格式
13.2.2 旅行数据格式
13.2.3 设置Flickr照片集
13.3 TripomaticDigester类
13.3.1 依赖性检查
13.3.2 TripomaticDigester的构造器
13.3.3 解读旅行数据
13.3.4 加载经典信息
13.3.5 收集元素的文本内容
13.4 Tripomatic应用类
13.4.1 Tripomatic类和构造器
13.4.2 创建内容元素
13.4.3 填充旅行数据
13.4.4 显示地图
13.4.5 加载缩略图
13.4.6 显示照片
13.5 Trip-o-matic应用页面
13.5.1 Trip-o-matic的HTML文档
13.5.2 样式之旅
13.6 总结