本书全面地介绍了Ajax技术。\r\n 全书分为4个部分。第1部分介绍Ajax应用程序的主要特点,同时还通过“留言板”程序比较了Ajax技术和传统Web开发技术的不同之处。第2部分和第3部分讲解了Ajax的核心技术,包括JavaScript、XMLHttpRequest、DOM、XML、CSS以及服务器端编程。第4部分通过完整项目案例介绍Ajax的典型应用。\r\n 本书适合网络编程人员、网页制作人员和网站建设者阅读。
第1部分 Ajax入门\r\n\r\n第1章 Ajax概述 3\r\n1.1 什么是Ajax 3\r\n1.1.1 Ajax的含义 3\r\n1.1.2 Ajax的发展历史 4\r\n1.1.3 使用Ajax能做什么 4\r\n1.2 Ajax:新的Web开发模式 7\r\n1.2.1 传统的Web开发模式 7\r\n1.2.2 基于Ajax的开发模式 9\r\n1.2.3 两种开发模式的比较 9\r\n1.3 Ajax中的关键技术 11\r\n1.3.1 JavaScript脚本语言 11\r\n1.3.2 XMLHttpRequest对象 11\r\n1.3.3 可扩展标记语言(XML) 12\r\n1.3.4 文档对象模型(DOM) 12\r\n1.3.5 级联样式表技术(CSS) 12\r\n1.4 使用Ajax带来的问题 13\r\n1.4.1 用户浏览习惯改变带来的问题 14\r\n1.4.2 对搜索引擎的不友好 14\r\n1.4.3 前进后退按钮的失效 14\r\n1.4.4 刷新定位问题 16\r\n1.4.5 性能问题 16\r\n1.4.6 开发难度的加大 16\r\n\r\n第2章 创建第一个Ajax应用:留言板 18\r\n2.1 环境设置、需求分析及数据库设计 18\r\n2.1.1 环境设置 18\r\n2.1.2 留言板的需求分析 20\r\n2.1.3 数据库设计 21\r\n2.2 使用传统的Web开发方式 21\r\n2.2.1 设计留言显示页面 21\r\n2.2.2 设计留言提交页面 23\r\n2.2.3 服务器端程序设计 24\r\n2.3 使用Ajax实现留言板 26\r\n2.3.1 一个页面就是一个程序 27\r\n2.3.2 客户端页面设计 27\r\n2.3.3 服务器端程序设计 27\r\n2.3.4 使用XMLHttpRequest将数据提交到服务器 29\r\n2.3.5 处理服务器返回的信息 31\r\n2.3.6 将留言内容立刻显示在页面 31\r\n\r\n第2部分 JavaScript精讲\r\n\r\n第3章 JavaScript语言基础 39\r\n3.1 JavaScript概述 39\r\n3.1.1 JavaScript简介 39\r\n3.1.2 JavaScript版本介绍 39\r\n3.1.3 JavaScript在Ajax中的作用 40\r\n3.2 JavaScript编辑和调试工具 42\r\n3.2.1 用什么编写JavaScript程序 42\r\n3.2.2 使用浏览器调试JavaScript程序 42\r\n3.2.3 使用Venkman调试JavaScript程序 44\r\n3.3 如何在HTML中工作 45\r\n3.3.1 标记:标识语言类型 45\r\n3.3.2 使用外部JavaScript文件 46\r\n3.3.3 嵌入HTML标记的JavaScript代码 47\r\n3.4 建立JavaScript表达式 47\r\n3.4.1 变量 47\r\n3.4.2 常量 48\r\n3.4.3 数据类型 49\r\n3.4.4 数据类型的转换 51\r\n3.4.5 JavaScript的语句结构 53\r\n3.4.6 可选的分号 54\r\n3.4.7 加入注释 55\r\n3.4.8 建立赋值表达式 56\r\n3.4.9 建立数字表达式 56\r\n3.4.10 使用字符串表达式 57\r\n3.4.11 使用比较表达式 58\r\n3.4.12 使用逻辑表达式 60\r\n3.4.13 使用逗号(,)表达式 62\r\n3.4.14 理解操作符的优先级 62\r\n\r\n第4章 流程控制和函数 64\r\n4.1 代码流程控制:条件语句和循环语句 64\r\n4.1.1 使用if语句进行条件判断 64\r\n4.1.2 使用if…else…处理条件不成立的情形 65\r\n4.1.3 使用条件运算符(?:) 66\r\n4.1.4 使用switch语句进行多重条件判断 66\r\n4.1.5 使用while循环 68\r\n4.1.6 使用do…while循环 69\r\n4.1.7 使用for循环 69\r\n4.1.8 break语句:立即跳出循环的执行 70\r\n4.1.9 continue语句:停止当前循环进入下一次循环 71\r\n4.2 使用函数 72\r\n4.2.1 什么是函数 72\r\n4.2.2 定义和调用函数 72\r\n4.2.3 给函数传递参数 74\r\n4.2.4 参数的值传递和引用传递 75\r\n4.2.5 使用return语句从函数返回值 76\r\n4.2.6 变量的作用范围:局部变量和全局变量 77\r\n4.2.7 使用递归函数 78\r\n4.3 使用JavaScript内部函数 79\r\n4.3.1 什么是内部函数 79\r\n4.3.2 使用eval函数来执行JavaScript代码 79\r\n4.3.3 使用parseInt和parseFloat函数将字符串转换为数字 80\r\n4.3.4 使用escape和unescape函数进行URL编码和解码 81\r\n4.3.5 使用isNaN和isFinite函数判断数字的类型 81\r\n\r\n第5章 对象和表单 82\r\n5.1 对象概述 82\r\n5.2 处理日期和时间:Date对象 82\r\n5.2.1 创建一个日期对象 82\r\n5.2.2 从Date对象中提取信息 83\r\n5.2.3 设置日期对象的值 85\r\n5.2.4 进行日期计算 85\r\n5.2.5 其他Date对象的方法 86\r\n5.3 进行数学运算:Math对象 87\r\n5.3.1 将一个小数四舍五入到指定位数 88\r\n5.3.2 使用随机函数Math.random() 89\r\n5.4 使用数组:Array对象 90\r\n5.4.1 创建一个数组 90\r\n5.4.2 使用数组元素 91\r\n5.4.3 使用多维数组 92\r\n5.4.4 使用数组的length属性 92\r\n5.4.5 使用数组对象的方法 94\r\n5.5 处理文本:String对象 95\r\n5.5.1 确定字符串的长度 96\r\n5.5.2 搜索和提取子字符串 96\r\n5.5.3 替换和匹配字符串 97\r\n5.5.4 字符串对象的其他方法 98\r\n5.6 对象的高级应用 98\r\n5.6.1 获取浏览器信息:使用navigator对象 98\r\n5.6.2 处理地址栏信息:location对象 100\r\n5.6.3 控制前进和后退:使用history对象 102\r\n5.6.4 文档操作初步:document对象 102\r\n5.6.5 使用with()语句简化对象访问 106\r\n5.7 事件机制 107\r\n5.7.1 什么是事件 107\r\n5.7.2 使用HTML标记创建事件处理程序 107\r\n5.7.3 使用对象的事件属性创建事件处理程序 108\r\n5.7.4 使用attachEvent和addEventListener方法绑定事件处理程序 109\r\n5.7.5 使用event对象获取事件信息 109\r\n5.7.6 使用event对象的属性 111\r\n5.8 表单编程入门 112\r\n5.8.1 使用form对象 112\r\n5.8.2 引用表单域 114\r\n5.8.3 表单域的通用属性 114\r\n5.8.4 表单域的通用方法 115\r\n5.8.5 表单域的通用事件 116\r\n5.9 使用文本域 117\r\n5.9.1 获取和设置文本域的内容 118\r\n5.9.2 使用defaultValue获得HTML标记中的value值 118\r\n5.9.3 使用select方法选中文本 119\r\n5.9.4 使用onselect事件处理用户的选中操作 119\r\n5.10 使用按钮类表单 119\r\n5.10.1 使用简单按钮 119\r\n5.10.2 使用复选框 119\r\n5.10.3 使用单选按钮 121\r\n5.11 使用下拉列表框 121\r\n5.11.1 使用value属性获取和设置下拉列表框的值 122\r\n5.11.2 使用length属性获取选项的个数 122\r\n5.11.3 使用selectedIndex属性获取当前选项的索引 122\r\n5.11.4 使用options属性获取选项集合 122\r\n5.11.5 使用option对象的value属性和text属性 123\r\n5.11.6 使用option对象的selected属性 123\r\n5.11.7 使用select对象的onchange事件 123\r\n5.11.8 为select对象添加一个选项 124\r\n5.11.9 从select对象中删除一个选项 124\r\n5.11.10 清空一个select对象 124\r\n5.11.11 替换一个选项 125\r\n3.10.12 下拉框实例:二级联动的下拉列表菜单 125\r\n5.12 执行表单验证 127\r\n\r\n第6章 JavaScript面向对象程序设计 129\r\n6.1 JavaScript中支持面向对象的基础 129\r\n6.1.1 用定义函数的方式定义类 129\r\n6.1.2 使用new操作符获得一个类的实例 129\r\n6.1.3 使用方括号([])引用对象的属性和方法 130\r\n6.1.4 动态添加、修改、删除对象的属性和方法 132\r\n6.1.5 使用大括号({})语法创建无类型对象 133\r\n6.1.6 prototype原型对象 134\r\n6.2 深入认识JavaScript中的函数 135\r\n6.2.1 概述 135\r\n6.2.2 认识函数对象(Function Object) 135\r\n6.2.3 函数对象和其他内部对象的关系 137\r\n6.2.4 将函数作为参数传递 139\r\n6.2.5 传递给函数的隐含参数:arguments 139\r\n6.2.6 函数的apply、call方法和length属性 140\r\n6.2.7 深入认识JavaScript中的this指针 141\r\n6.3 类的实现 142\r\n6.3.1 理解类的实现机制 142\r\n6.3.2 使用prototype对象定义类成员 143\r\n6.3.3 一种JavaScript类的设计模式 145\r\n6.4 公有成员、私有成员和静态成员 146\r\n6.4.1 实现类的公有成员 146\r\n6.4.2 实现类的私有成员 146\r\n6.4.3 实现静态成员 147\r\n6.5 使用for(…in…)实现反射机制 148\r\n6.5.1 什么是反射机制 148\r\n6.5.2 在JavaScript中利用for(…in…)语句实现反射 149\r\n6.5.3 使用反射来传递样式参数 149\r\n6.6 类的继承 150\r\n6.6.1 利用共享prototype实现继承 150\r\n6.6.2 利用反射机制和prototype实现继承 152\r\n6.6.3 prototype-1.3.1框架中的类继承实现机制 154\r\n6.7 实现抽象类 156\r\n6.7.1 抽象类和虚函数 156\r\n6.7.2 在JavaScript实现抽象类 156\r\n6.7.3 使用抽象类的示例 157\r\n6.8 事件设计模式 158\r\n6.8.1 事件设计概述 158\r\n6.8.2 最简单的事件设计模式 158\r\n6.8.3 给事件处理程序传递参数 159\r\n6.8.4 使自定义事件支持多绑定 162\r\n6.9 实例:使用面向对象思想处理cookie 163\r\n6.9.1 需求分析 163\r\n6.9.2 创建Cookie对象 163\r\n6.9.3 实现设置Cookie的方法 163\r\n6.9.4 实现取Cookie值的方法 164\r\n6.9.5 实现删除Cookie的方法 164\r\n\r\n第7章 JavaScript高级技术 166\r\n7.1 框架编程 166\r\n7.1.1 框架编程概述 166\r\n7.1.2 框架间的互相引用 166\r\n7.1.3 改变框架的载入页面 167\r\n7.1.4 引用其他框架内的JavaScript变量和函数 168\r\n7.2 使用cookie 169\r\n7.2.1 cookie概述 169\r\n7.2.2 设置cookie 170\r\n7.2.3 获取cookie的值 171\r\n7.2.4 给cookie设置终止日期 172\r\n7.2.5 删除cookie 173\r\n7.2.6 指定可访问cookie的路径 173\r\n7.2.7 指定可访问cookie的主机名 173\r\n7.2.8 综合示例:构造通用的cookie处理函数 174\r\n7.3 使用正则表达式 175\r\n7.3.1 正则表达式概述 175\r\n7.3.2 使用RegExp对象执行字符串模式匹配 177\r\n7.3.3 提取子字符串 178\r\n7.3.4 和字符串相关的操作 179\r\n7.4 使用window对象 180\r\n7.4.1 使用window.open方法新建窗口 180\r\n7.4.2 使用定时器实现JavaScript的延期执行或重复执行 181\r\n7.4.3 给定时器调用传递参数 184\r\n7.4.4 使用status和defaultStatus属性改变状态栏信息 185\r\n7.4.5 使用alert、prompt和confirm语句与用户进行交互 186\r\n7.5 异常处理 187\r\n7.5.1 异常处理概述 187\r\n7.5.2 使用try-catch-finally处理异常 187\r\n7.5.3 使用throw语句抛出异常 188\r\n\r\n第3部分 Ajax核心技术\r\n\r\n第8章 XMLHttpRequest对象详解 193\r\n8.1 概述 193\r\n8.1.1 什么是XMLHttpRequest对象 193\r\n8.1.2 XMLHttpRequest对象在Ajax中的作用 193\r\n8.2 使用XMLHttpRequest对象和服务器进行通信 194\r\n8.2.1 创建XMLHttpRequest对象 194\r\n8.2.2 使用open方法创建一个请求 195\r\n8.2.3 使用send方法发送一个请求 196\r\n8.2.4 使用onreadystatechange事件捕获请求的状态变化 196\r\n8.2.5 使用readyState属性判断请求状态 196\r\n8.2.6 使用status属性判断请求的结果 197\r\n8.2.7 使用responseText获得返回的文本 198\r\n8.2.8 使用responseXML属性获取XML文档 199\r\n8.2.9 使用abort方法取消一个请求 200\r\n8.2.10 XMLHttpRequest对象的其他属性和方法 201\r\n8.3 XMLHttpRequest对象使用示例 201\r\n8.3.1 用get方法检测用户名是否存在 201\r\n8.3.2 使用post方法向服务器提交数据 203\r\n8.3.3 实现服务器相关的二级联动菜单 204\r\n\r\n第9章 Ajax的基础架构:DOM模型 210\r\n9.1 概述 210\r\n9.1.1 什么是DOM模型 210\r\n9.1.2 DOM模型的组成部分 211\r\n9.1.3 DOM模型在Ajax开发中的作用 211\r\n9.1.4 DOM模型的发展 211\r\n9.1.5 DOM模型和DHTML的关系 211\r\n9.1.6 小结 212\r\n9.2 DOM结构模型 212\r\n9.2.1 理解DOM中的文档层次结构 212\r\n9.2.2 结点的概念 212\r\n9.2.3 结点的类型 213\r\n9.3 处理DOM中的结点 213\r\n9.3.1 直接引用结点 213\r\n9.3.2 间接引用结点 214\r\n9.3.3 获取结点信息 215\r\n9.3.4 处理属性结点 216\r\n9.3.5 处理文本结点 217\r\n9.3.6 因浏览器而异的空白结点 218\r\n9.3.7 使用innerHTML改变结点的内容 219\r\n9.4 改变文档的层次结构 220\r\n9.4.1 使用document.createElement方法创建元素结点 220\r\n9.4.2 使用document.createTextNode方法创建文本结点 220\r\n9.4.3 使用appendChild方法添加结点 220\r\n9.4.4 使用insertBefore方法插入子结点 221\r\n9.4.5 使用replaceChild方法取代子结点 222\r\n9.4.6 使用cloneNode方法复制结点 223\r\n9.4.7 使用removeChild方法删除子结点 223\r\n9.5 表格操作 224\r\n9.5.1 表格操作概述 224\r\n9.5.2 DOM1(DHTML)中表格对象的结构 226\r\n9.5.3 创建一个表格对象 226\r\n9.5.4 添加一行 226\r\n9.5.5 添加单元格 226\r\n9.5.6 引用单元格 228\r\n9.5.7 使用单元格对象 228\r\n9.5.8 删除行和单元格 228\r\n9.5.9 交换两行的位置 230\r\n9.5.10 交换两个单元格的位置 233\r\n9.5.11 生成表格的其他方法 234\r\n\r\n第10章 控制外观:CSS入门 235\r\n10.1 CSS概述 235\r\n10.1.1 什么是CSS 235\r\n10.1.2 使用CSS的优点 235\r\n10.1.3 CSS在Ajax开发中的作用 236\r\n10.2 使用CSS控制页面表现 238\r\n10.2.1 CSS的样式 238\r\n10.2.2 CSS基本语法 240\r\n10.2.3 使用标记选择器 240\r\n10.2.4 使用类型选择器 241\r\n10.2.5 使用id选择器 242\r\n10.2.6 使用层次选择器 243\r\n10.2.7 继承 244\r\n10.2.8 样式应用就近原则 244\r\n10.2.9 认识CSS中的盒模型 246\r\n10.2.10 设计合理的CSS结构 247\r\n10.3 使用JavaScript控制CSS 247\r\n10.3.1 通过style对象改变结点的CSS 247\r\n10.3.2 使用className属性指定结点样式 248\r\n10.4 使用IE Only的CSS滤镜 249\r\n10.4.1 CSS滤镜概述 249\r\n10.4.2 使用界面滤镜 250\r\n10.4.3 静态滤镜 254\r\n10.4.4 动态滤镜 258\r\n10.4.5 使用JavaScript控制CSS滤镜 261\r\n\r\n第11章 Ajax标准通信载体--XML语言 263\r\n11.1 XML概述 263\r\n11.1.1 一个简单的XML实例 263\r\n11.1.2 XML的基本概念 264\r\n11.1.3 XML在Ajax中的作用 265\r\n11.2 使用Javascript操作XML 265\r\n11.2.1 MSXML介绍 265\r\n11.2.2 在IE浏览器中创建XML片段 266\r\n11.2.3 在IE浏览器中解析XML文本 267\r\n11.2.4 使用Mozilla浏览器支持的DOM模型创建XML片段 268\r\n11.2.5 使用Mozilla浏览器支持的DOM模型解析XML片段 269\r\n11.2.6 基于Javascript的XML解析程序 270\r\n11.3 其他通信模式 271\r\n11.3.1 使用XML的问题 271\r\n11.3.2 使用纯文本 271\r\n11.3.3 使用HTML片段 271\r\n11.3.4 使用JSON 272\r\n\r\n第12章 服务器端编程 277\r\n12.1 服务器端程序在Ajax中的角色 277\r\n12.1.1 理解Ajax中的服务器端编程模式 277\r\n12.1.2 Ajax中服务器端程序设计的特点 277\r\n12.1.3 参数传递方式 278\r\n12.1.4 接口设计模式 278\r\n12.2 常用服务器端编程技术介绍 280\r\n12.2.1 JSP语言介绍 280\r\n12.2.2 PHP语言介绍 281\r\n12.2.3 ASP.NET介绍 281\r\n12.3 实现Ajax翻页效果 282\r\n12.3.1 翻页 282\r\n12.3.2 系统描述 282\r\n12.3.3 客户端设计:页面结构 282\r\n12.3.4 客户端设计:页面外观 283\r\n12.3.5 客户端设计:设计Ajax逻辑 283\r\n12.3.6 客户端设计:分页按钮 284\r\n12.3.7 服务器端设计:通过ASP.NET控件直接得到HTML代码 285\r\n12.3.8 服务器端设计:设计通用的分页标签生成器 285\r\n12.3.9 服务器端设计:处理用户的查询 286\r\n12.3.10 最终效果 290\r\n\r\n第13章 Ajax中的常见问题及解决方案 292\r\n13.1 跨浏览器问题 292\r\n13.1.1 JavaScript中错误信息的显示 292\r\n13.1.2 JavaScript中的eval函数能否使用apply方法 293\r\n13.1.3 DOM中使用getElementById获取指定id结点的引用 295\r\n13.1.4 DOM中的事件绑定语法 295\r\n13.1.5 DOM中事件顺序模型的不同 296\r\n13.1.6 CSS中使用!important提高属性优先级 298\r\n13.1.7 在CSS中使用IE浏览器不支持的属性实现浏览器选择性 299\r\n13.1.8 在CSS中使用反斜杠注释屏蔽IE5-Mac 299\r\n13.2 解决导航问题 300\r\n13.2.1 导航问题的由来 300\r\n13.2.2 利用URL存储状态信息 300\r\n13.2.3 利用Hash参数解决刷新问题 301\r\n13.2.4 解决浏览器的【前进】【后退】按钮失效问题 305\r\n13.3 搜索引擎问题 312\r\n13.3.1 Ajax程序不易被搜索引擎检索到 312\r\n13.3.2 使用冗余地址思路解决搜索引擎问题 313\r\n13.4 安全问题 313\r\n13.4.1 服务器端始终要作有效性验证 313\r\n13.4.2 避免拒绝服务攻击(DoS攻击) 315\r\n13.4.3 其他安全问题 315\r\n13.5 性能问题 316\r\n13.5.1 衡量JavaScript代码的运行事件 316\r\n13.5.2 因浏览器而异的字符串连接操作 316\r\n13.5.3 按需载入JavaScript代码 318\r\n13.5.4 压缩JavaScript代码 319\r\n\r\n第4部分 典型应用\r\n\r\n第14章 动态获取数据的树状菜单 323\r\n14.1 树状菜单概述 323\r\n14.1.1 什么是树状菜单 323\r\n14.1.2 使用无序列表标记(ul) 324\r\n14.1.3 使用CSS控制外观 324\r\n14.1.4 展开和折叠涉及的关键技术 326\r\n14.2 实现树状菜单的两种方式 326\r\n14.2.1 完全在客户端实现 326\r\n14.2.2 完全由服务器端实现 327\r\n14.2.3 基于Ajax的实现 328\r\n14.3 设计树状菜单的数据结构 328\r\n14.3.1 设计树结点接口类 328\r\n14.3.2 实现树结构的数据库设计 329\r\n14.3.3 最终树结构实现类 330\r\n14.3.4 服务端的数据处理 333\r\n14.3.5 静态树状菜单的实现 334\r\n14.4 动态获取数据的树状菜单 337\r\n14.4.1 什么时候需要动态获取数据 337\r\n14.4.2 服务器端的代码设计 337\r\n14.4.3 创建获取数据的方法 339\r\n14.4.4 处理取回数据的方法 340\r\n14.4.5 服务器端的请求处理方法 341\r\n\r\n第15章 RSS阅读器 343\r\n15.1 RSS概述 344\r\n15.1.1 什么是RSS 344\r\n15.1.2 一个简单的RSS 2.0示例 345\r\n15.1.3 元素说明 346\r\n15.1.4 元素说明 347\r\n15.2 阅读RSS模块程序设计 347\r\n15.2.1 客户端原理分析 347\r\n15.2.2 客户端代码设计 347\r\n15.2.3 创建RSSReader类 350\r\n15.2.4 服务器端代码设计 353\r\n15.2.5 创建LoadRSS类 355\r\n15.3 添加RSS模块程序设计 358\r\n15.3.1 客户端原理分析 358\r\n15.3.2 客户端代码设计 358\r\n15.3.3 服务器端代码设计 360\r\n15.3.4 数据库设计 361\r\n\r\n第16章 搜索提示(Suggest) 365\r\n16.1 搜索提示概述 365\r\n16.1.1 Google Suggest介绍 365\r\n16.1.2 搜索提示所带来的好处 366\r\n16.1.3 基本原理分析 366\r\n16.2 客户端代码 367\r\n16.2.1 客户端原理分析 367\r\n16.2.2 创建请求 368\r\n16.2.3 处理返回数据 369\r\n16.3 服务器端代码 370\r\n16.3.1 服务器端原理分析 370\r\n16.3.2 处理服务请求 371\r\n16.3.3 数据库设计 372\r\n\r\n第17章 基于Ajax的相册 374\r\n17.1 基本原理分析 374\r\n17.1.1 界面设计分析 374\r\n17.1.2 CSS设计分析 375\r\n17.1.3 图片放大原理分析 378\r\n17.1.4 动态更换皮肤 379\r\n17.2 Ajax程序设计 380\r\n17.2.1 原理分析 380\r\n17.2.2 创建XMLHttpRequest对象 380\r\n17.2.3 发送请求 381\r\n17.2.4 处理返回数据 382\r\n17.3 服务器端程序设计 383\r\n17.3.1 处理服务请求 383\r\n17.3.2 创建实体访问类 385\r\n17.3.3 数据库设计 386\r\n\r\n第18章 基于Ajax的聊天室程序 389\r\n18.1 聊天室概述 390\r\n18.1.1 聊天室程序所需要解决的问题 390\r\n18.1.2 传统聊天室的缺点 390\r\n18.1.3 使用Ajax技术的好处 391\r\n18.1.4 基本原理分析 391\r\n18.2 数据库设计 392\r\n18.2.1 数据库设计基本原理 392\r\n18.2.2 数据表设计 392\r\n18.2.3 创建表所对应的实体类 393\r\n18.3 客户端程序设计 395\r\n18.3.1 基本原理分析 395\r\n18.3.2 选择聊天室页面 396\r\n18.3.3 聊天室主页面 398\r\n18.3.4 调用初始化方法 401\r\n18.3.5 获得消息数据处理 402\r\n18.3.6 发送消息数据处理 403\r\n18.4 服务器端程序设计 404\r\n18.4.1 刷新时获得消息请求的处理 404\r\n18.4.2 发送消息请求的处理 407\r\n18.4.3 数据库连接工具类 408\r\n\r\n第19章 拖拽方式定制个性化主页 411\r\n19.1 系统概述 411\r\n19.1.1 系统目标:模仿Google ig 411\r\n19.1.2 系统预览 412\r\n19.1.3 系统构架 412\r\n19.2 用户登录模块 414\r\n19.2.1 原理分析 414\r\n19.2.2 客户端代码 415\r\n19.2.3 处理服务请求 416\r\n19.2.4 服务器端代码 417\r\n19.2.5 连接数据库 423\r\n19.3 小窗口初始化模块 425\r\n19.3.1 原理分析 425\r\n19.3.2 数据库设计 426\r\n19.3.3 访问数据库的实体类 426\r\n19.3.4 父类代码的实现 429\r\n19.3.5 创建欢迎小窗口 430\r\n19.3.6 创建新闻RSS小窗口 431\r\n19.3.7 创建书签小窗口 432\r\n19.4 个性化主页模块 433\r\n19.4.1 布局显示原理分析 433\r\n19.4.2 数据库设计 433\r\n19.4.3 创建访问数据库实体类 435\r\n19.4.4 客户端代码 439\r\n19.4.5 布局设置原理分析 441\r\n19.4.6 关闭窗口自动保存布局 441\r\n19.4.7 拖拽窗口自动保存布局 443\r\n19.4.8 服务器端代码 446\r\n19.5 拖拽原理分析 448\r\n19.5.1 拖拽原理分析 448\r\n19.5.2 释放原理分析 449\r\n19.5.3 通用的拖放类 450\r\n\r\n第20章 上传文件显示进度条 452\r\n20.1 上传文件概述 452\r\n20.1.1 上传文件的表单概述 452\r\n20.1.2 上传文件后的服务器端处理 453\r\n20.1.3 使用Apache的FlieUpload 455\r\n20.1.4 使用Session记录上传进度 456\r\n20.2 客户端实现 456\r\n20.2.1 客户端原理分析 456\r\n20.2.2 客户端代码 457\r\n20.2.3 客户端请求处理 458\r\n20.3 服务器端实现 459\r\n20.3.1 服务器端原理分析 459\r\n20.3.2 上传文件处理过程 460\r\n20.3.3 获取上传信息 462\r\n20.3.4 创建监听器类 464\r\n20.3.5 注册监听器类 466\r\n\r\n第21章 滑动显示分页 470\r\n21.1 滑动显示分页概述 470\r\n21.1.1 传统的分页显示 470\r\n21.1.2 滑动分页显示 471\r\n21.1.3 滑块基本原理 471\r\n21.2 客户端实现 473\r\n21.2.1 客户端基本原理 473\r\n21.2.2 客户端页面代码 473\r\n21.2.3 Javascript代码分析 475\r\n21.3 服务器端代码实现 477\r\n21.3.1 服务器端请求处理 477\r\n21.3.2 创建数据实体类 479\r\n21.3.3 数据库设计 480\r\n21.3.4 连接数据库的工具类 481\r\n\r\n第22章 仿Windows关机效果 484\r\n22.1 基本原理分析 484\r\n22.1.1 Windows关机效果分析 484\r\n22.1.2 网页中实现关机效果分析 485\r\n22.2 代码实现 487\r\n22.2.1 客户端代码 487\r\n22.2.2 客户端脚本 488\r\n22.2.3 封装lightbox类 490\r\n22.3 服务器端代码 492\r\n\r\n附录A JavaScript关键字和保留字 494\r\nA.1 关键字 494\r\nA.2 保留字 494\r\n\r\n附录B prototype-1.4.0框架详解 495\r\nB.1 基础工具类 495\r\nB.1.1 Prototype对象 495\r\nB.1.2 Class对象 496\r\nB.1.3 对Object类的扩展 497\r\nB.1.4 对Function类的扩展 498\r\nB.1.5 对Number类的扩展 499\r\nB.1.6 Try对象 500\r\nB.1.7 其他工具 500\r\nB.2 定时器类 500\r\nB.3 基础工具类 501\r\nB.3.1 $()方法 502\r\nB.3.2 对String类(字符串)的扩展 502\r\nB.3.3 Enumerable(可枚举)接口 503\r\nB.3.4 $A()函数 506\r\nB.3.5 对Array类(数组)的扩展 507\r\nB.3.6 新的哈希(Hash)对象 507\r\nB.3.7 使用$H()函数获取Hash对象 508\r\nB.3.8 新的ObjectRange类 508\r\nB.3.9 使用$R()方法快速创建ObjectRange对象 508\r\nB.4 Ajax模块 509\r\nB.4.1 Ajax对象 509\r\nB.4.2 Ajax.Responders对象 509\r\nB.4.3 Ajax.Base类 510\r\nB.4.4 Ajax.Request类 510\r\nB.4.5 Ajax.Updater类 511\r\nB.4.6 Ajax.PeriodicalUpdater类 512\r\nB.5 对文档操作的封装 512\r\nB.5.1 使用document.getElementsByClassName方法 512\r\nB.5.2 Element对象 513\r\nB.5.3 Toggle对象 514\r\nB.5.4 Insertion命名空间 514\r\nB.5.5 Element.ClassNames类 515\r\nB.6 表单操作 516\r\nB.6.1 Field对象 516\r\nB.6.2 Form对象 516\r\nB.6.3 Form.Element对象 516\r\nB.6.4 Form.Element.Serializers对象 517\r\nB.6.5 使用$F()函数获取表单域的值 517\r\nB.7 Observer模式框架 517\r\nB.7.1 Abstract.TimedObserver类 517\r\nB.7.2 Form.Element.Observer类 518\r\nB.7.3 Form.Observer类 518\r\nB.7.4 Abstract.EventObserver类 518\r\nB.7.5 Form.Element.EventObserver类 519\r\nB.7.6 Form.Observer类 519\r\nB.8 事件处理:对Event对象的扩展 519\r\nB.9 结点的位置处理:Position对象 520
前 言
随着以Google公司构建出成功的富Web应用程序(Rich Internet Application,缩写为RIA),Ajax作为一个新名词出现在人们的面前,并迅速席卷全球,成为一种炙手可热的技术。在使用者眼里,Ajax意味着极好的用户体验和强大的功能;而在开发者眼里,Ajax则是一些旧技术的新名词。但当这些技术以一种崭新的角色出现时,越来越多的Web开发者想全面地掌握它们。本书正是以此为目标,通过对组成Ajax的各个技术要素进行系统而全面的介绍,揭开Ajax的神秘面纱。
本书要解决的问题
尽管Ajax的相关技术已经存在很久,都是针对传统的Web开发,功能相对简单,所以相关书籍仅停留在初级阶段,并且各种技术各自为政,没有形成一个统一的整体。
本书以Ajax的应用为核心,综合介绍相关技术的用法,注重对使用技巧的讲解,尤其对长期被忽略而又是Ajax核心技术的介绍,例如面向对象的JavaScript编程、XMLHttpRequest对象、DOM模型都是本书中的重点。另外,还针对Ajax应用中的常见问题,例如:书签问题、前进后退导航失效、搜索引擎问题等,本书都提出了详尽的解决方案,使读者能够快速构建完善的Ajax应用。
本书的内容
在内容的编排和目录组织上,本书也做了精心的安排,全书共分为四部分。
第一部分着重介绍Ajax应用程序的主要特点,和传统Web开发的区别。其中利用一章展示了留言板这种典型的Web应用在Ajax下的完整实现,让读者对Ajax有一个最直观的了解。
第二部分详细介绍Ajax最重要的技术:JavaScript。它是整个Ajax的基础。很多书只是把它作为特效制作的工具进行讲解,而在Ajax中,它不再是这种“小儿科”式的语言,而是一种强大的面向对象语言,本书将从Ajax应用的角度阐述JavaScript的应用。
第三部分着重介绍Ajax相关技术的细节,包括XMLHttpRequest对象、DOM模型、CSS应用、XML语言、服务器端编程、Ajax中的常见问题及解决方案等。
第四部分是Ajax的实战开发部分,笔者精心挑选了Ajax中的典型应用,使用的技术基本覆盖了Ajax的各个层次,并且这些例子都使用面向对象的思想进行开发,最大程度的做到了代码重用,使读者无需写一行代码便拥有了一套属于自己的Ajax控件库。
本书特点
• 注重技巧:本书在介绍各种技术的基础上,展现了很多开发技巧,例如,如何实现对象继承、如何实现自定义对象的事件机制、如何实现界面的拖放效果等。
• 讲解细致:本书利用通俗的语言,结合实例代码,讲解每一种技术的用法,力求做到通俗易懂、内容深刻。
• 主次分明:本书时刻以Ajax概念为核心,紧紧抓住和Ajax相关的部分作重点介绍,而一些简单的语法或者很少用的功能,往往一笔带过。这样就使读者能够在最短的时间内学到最重要的知识,有助于有Web开发基础的读者迅速提高编程能力。
• 案例丰富:本书的第四部分是Ajax实战开发部分,是Ajax技术的综合应用。案例都是精心挑选,典型且实用,全面反映了Ajax技术特点和应用场合,读者能够快速的构建属于自己的Ajax开发库。
• 完善的服务:本书提供了专门的E-mail:ptbook@163.com,如果读者有疑问,可以发E-mail给我们,我们会随时解决。
适合阅读本书的读者:
√ 网络编程人员;
√ 网页制作人员;
√ 网站建设者。
作者
2006年5月
无封面