目录
第一部分 Ajax基础 第1章 拥抱Ajax 2 1.1 Ajax,一种颠覆性的技术 3 1.1.1 重新定义用户的工作流程 3 1.1.2 重新定义Web应用的架构 4 1.2 Ajax快速入门 6 1.2.1 XMLHttpRequest简介 6 1.2.2 实例化XMLHttpRequest 7 1.2.3 发送请求 8 1.2.4 处理响应 9 1.2.5 XMLHttpRequest的其他方法和属性 10 1.3 使用框架简化Ajax 11 1.3.1 用Prototype库中的Ajax.Request对象创建请求 12 1.3.2 简化Ajax响应 15 1.4 总结 18 第2章 Ajax的通信方式 19 2.1 在服务器端生成JavaScript 19 2.1.1 执行由服务器生成的代码 19 2.1.2 遵循代码生成的实践准则 21 2.2 JSON简介 25 2.2.1 在服务器上生成JSON 26 2.2.2 使用JSON往返传输数据 29 2.3 在Ajax中使用XML和XSLT 33 2.3.1 解析服务器生成的XML 34 2.3.2 用XSLT和XPath来更好地处理XML 38 2.4 在Web服务中使用Ajax 43 2.5 总结 49 第3章 面向对象的JavaScript与Prototype库 50 3.1 面向对象的JavaScript 51 3.1.1 对象的基本原理 51 3.1.2 函数是一等公民 53 3.1.3 对象构造器和方法 58 3.1.4 编写JavaScript类:一个按钮 63 3.2 Prototype程序库 74 3.2.1 常用的函数和扩展 75 3.2.2 对数组的扩展 76 3.2.3 Hash类 78 3.2.4 给函数绑定上下文对象 79 3.2.5 面向对象的Prototype 80 3.2.6 用Prototype重写Button类 86 3.3 总结 89 第4章 Ajax开源工具集 90 4.1 Dojo工具包 90 4.1.1 用Dojo进行异步请求 91 4.1.2 用Dojo自动对表单进行编组 94 4.2 Prototype 96 4.2.1 Prototype中的异步请求 96 4.2.2 用Prototype进行自动更新 100 4.2.3 用Prototype进行定期更新 102 4.3 jQuery 104 4.3.1 jQuery基础 104 4.3.2 用jQuery进行异步加载 106 4.3.3 用jQuery获取动态数据 110 4.4 DWR 113 4.5 总结 120 第二部分 Ajax最佳实践 第5章 事件处理 124 5.1 事件处理模型 125 5.1.1 基本的事件处理注册 125 5.1.2 高级事件处理 128 5.2 Event对象与事件传播机制 130 5.2.1 Event对象 130 5.2.2 事件的传播 131 5.3 使用Prototype进行事件处理 135 5.4 事件类型 137 5.4.1 鼠标事件 137 5.4.2 键盘事件 138 5.4.3 change事件 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.1 POST请求剖析 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 导航和Ajax 184 7.2 传统的Web导航 185 7.2.1 一个简单的导航菜单 185 7.2.2 DHTML菜单 187 7.3 借鉴桌面应用的导航设施 190 7.3.1 使用qooxdoo库实现Tab组件 191 7.3.2 qooxdoo工具栏和窗口 193 7.3.3 qooxdoo树组件 196 7.4 桌面应用和Web应用的折中 200 7.4.1 OpenRico库的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.3 RSH框架介绍 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.2 Ajax应用中的拖放 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.3 Ajax请求超时 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.1 Java类的数据的交换 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和Ajax 320 12.1 Yahoo!开发者网络 321 12.1.1 Yahoo!地图 321 12.1.2 跨服务器代理 324 12.1.3 Yahoo! Maps Geocoding 331 12.1.4 Yahoo!交通 335 12.2 Google搜索API 340 12.3 Flickr图片分享 349 12.3.1 Flickr用户内部标识 350 12.3.2 Flickr图片和缩略图 353 12.4 稍等!据说,还有很多…… 357 12.4.1 Amazon服务 357 12.4.2 eBay服务 357 12.4.3 MapQuest 357 12.4.4 NOAA/国家气象服务 358 12.4.5 更多Web服务接口 358 12.5 总结 358 第13章 使用Ajax进行混搭 359 13.1 Trip-o-matic应用简介 359 13.1.1 应用的目的 359 13.1.2 应用概览和需求 360 13.2 Trip-o-matic的数据文件 360 13.2.1 我们应该采用什么格式 361 13.2.2 旅行数据格式 361 13.2.3 设置Flickr照片集 363 13.3 TripomaticDigester类 363 13.3.1 依赖性检查 364 13.3.2 TripomaticDigester的构造器 364 13.3.3 解读旅行数据 365 13.3.4 加载经典信息 366 13.3.5 收集元素的文本内容 367 13.4 Tripomatic应用类 368 13.4.1 Tripomatic类和构造器 369 13.4.2 创建内容元素 370 13.4.3 填充旅行数据 372 13.4.4 显示地图 374 13.4.5 加载缩略图 375 13.4.6 显示照片 377 13.5 Trip-o-matic应用页面 378 13.5.1 Trip-o-matic的HTML文档 378 13.5.2 样式之旅 379 13.6 总结 381
暂无评论!