本书特色:
(1)贴近实际:书中所有模块实例均以实际应用为基础,重视培养读者的应用能力。
(2)实例详尽:20多个常用模块的开发几乎覆盖了Ajax程序应用的绝大多数领域。
(3)强调实用:书中的模块都有很高的重用性,读者稍加整理便可应用于实际项目中。
(4)注重效率:书中每个实例的讲解都力求简洁实用,注重图文结合。
(5)实例完整:书中的每个实例都可以单独作为一个项目运行和演示。
(6)分别采用ASP.NET Ajax框架和脚本驱动两种开发方式,即重视开发效率,又强调Ajax原理应用。
(7)开发环境均为微软公司官方最新版本,具有很好的代码可移植性和技术先进性。
第一篇 Ajax技术概述
第1章 认识Ajax 3
1.1 Ajax概述 3
1.1.1 应用场景 3
1.1.2 开发模式 5
1.2 XMLHTTP+Web Form—最基本的形式 6
1.2.1 客户端 6
1.2.2 服务器端 7
1.3 XMLHTTP+HttpHandler—改良的形式 8
1.4 Call Back——ASP.NET 2.0的形式 11
1.5 关于本书的结构 13
1.6 小结 14
第2章 ASP.NET Ajax的概述、安装 15
2.1 概述 15
2.1.1 组成部分 15
2.1.2 架构初探 16
2.1.3 优势所在 17
2.2 安装和认识ASP.NET Ajax 18
2.2.1 安装步骤 18
2.2.2 脚本管理器ScriptManager 18
2.2.3 脚本管理器代理ScriptManagerProxy 18
2.2.4 Ajax化的Panel控件UpdatePanel 19
2.2.5 加载提示控件UpdateProgress 19
2.2.6 定时器Timer 19
2.2.7 使用ASP.NET Ajax Control Toolkit 19
2.3 实现Hello World程序 20
2.3.1 ASP.NET Ajax程序的配置 20
2.3.2 Hello Word程序的实现 22
2.4 小结 24
第二篇 ASP.NET Ajax组件应用
第3章 数据显示控件Ajax GridView应用 27
3.1 概述 27
3.2 相关控件介绍 28
3.2.1 ScriptManager 28
3.2.2 UpdatePanel 30
3.2.3 UpdateProgress 31
3.3 Ajax GridView的实现 31
3.3.1 成语表的数据结构 32
3.3.2 成语类Phrase 32
3.3.3 显示界面default.aspx 34
3.4 小结 37
第4章 Timer控件应用——聊天室 38
4.1 概述 38
4.2 Timer控件介绍 39
4.3 聊天室实现 41
4.3.1 聊天室的总体流程 41
4.3.2 服务器端实体类 41
4.3.3 用户登录 42
4.3.4 聊天室主界面Default.aspx 45
4.3.5 主界面的服务器端代码文件Default.aspx.cs 49
4.4 小结 51
第5章 ASP.NET Ajax Control Toolkit实用模块开发 52
5.1 自动完成 52
5.1.1 AutoCompleteExtender 53
5.1.2 数据库操作 55
5.1.3 Web服务 56
5.2 自动拒绝垃圾发布程序 60
5.2.1 NoBot 61
5.2.2 实现代码 62
5.3 拖曳排序 68
5.3.1 ReorderList 69
5.3.2 实现代码 71
5.4 评分功能 77
5.4.1 Rating 78
5.4.2 实现代码 79
5.5 QQ样式的菜单 85
5.5.1 多重折叠菜单组件Accordion 86
5.5.2 实现代码 88
5.6 小结 91
第三篇 Ajax非组件开发
第6章 注册登录 95
6.1 需求分析和系统概况 95
6.1.1 需求分析 95
6.1.2 系统概况 97
6.2 数据库设计 99
6.3 客户端代码 100
6.3.1 定义变量 100
6.3.2 注册的用户控件register.ascx 101
6.3.3 注册的相关脚本文件JScript.js 102
6.3.4 登录、注销 107
6.4 服务器端实现 108
6.4.1 系统主界面Default.aspx 108
6.4.2 Tools方法类 109
6.4.3 验证码实现 111
6.4.4 注册 114
6.4.5 登录和注销 115
6.5 小结 116
第7章 通信录 117
7.1 需求分析和系统概况 117
7.1.1 需求分析 117
7.1.2 系统概况 119
7.2 数据库设计 120
7.3 客户端代码 121
7.3.1 Address.ascx用户控件 121
7.3.2 脚本工具方法的封装 122
7.3.3 通信录信息的显示 124
7.3.4 通信录的添加和编辑 126
7.4 服务器端代码 128
7.4.1 数据库操作代码 128
7.4.2 Address.ashx代码 129
7.5 小结 132
第8章 留言本 133
8.1 需求分析和系统概况 133
8.1.1 需求分析 133
8.1.2 系统概况 134
8.2 数据库设计 136
8.3 客户端代码 137
8.3.1 客户端原理分析 137
8.3.2 封装XMLHTTP 138
8.3.3 留言本具体操作的客户端代码实现 140
8.4 服务器端实现 142
8.4.1 封装数据访问类 142
8.4.2 系统主界面 143
8.4.3 Ajax的处理页面 144
8.4.4 用户控件 146
8.5 小结 149
第9章 分页模块 150
9.1 需求分析和系统概况 150
9.2 数据库和存储过程 152
9.2.1 数据库 152
9.2.2 存储过程 152
9.3 服务器端代码 154
9.3.1 Tools工具类 154
9.3.2 XML格式化文件 156
9.3.3 Handler的代码 157
9.4 Ajax一般分页 159
9.5 滑动分页 161
9.5.1 滑动分页的显示页面default2.aspx 161
9.5.2 滑动分页的相关脚本文件scroll.js 162
9.6 小结 164
第10章 文件上传显示进度条 165
10.1 需求分析和系统概况 165
10.2 文件上传的HttpModule 166
10.3 进度条的实现 172
10.4 进度条控件的封装 174
10.5 小结 181
第11章 相册模块 182
11.1 概述 182
11.1.1 需求分析 182
11.1.2 文件结构 183
11.1.3 Prototype和Scriptaculous 184
11.2 数据库 185
11.3 图片浏览 186
11.3.1 Default.aspx 186
11.3.2 Lightbox用到的样式表 188
11.3.3 Lightbox类用到的辅助函数 190
11.3.4 实现Windows关机效果 192
11.4 后台管理 198
11.4.1 登录页面login.aspx 198
11.4.2 母版页和用户管理页面user.aspx 199
11.4.3 图片类别管理页面category.aspx 200
11.4.4 图片类别的增、删、改 202
11.4.5 图片上传页面picupload.aspx 204
11.4.6 图片列表页面piclist.aspx 205
11.5 小结 208
第12章 小偷模块 209
12.1 概述 209
12.2 基础代码 210
12.2.1 小偷类Thief 210
12.2.2 工具类Tools 213
12.2.3 数据库操作类Sql 214
12.3 天气查询 215
12.4 在线翻译 217
12.4.1 在线翻译的显示页面Google.aspx 218
12.4.2 在线翻译的处理类Google 221
12.5 电视节目时间表 222
12.5.1 概述 222
12.5.2 固定数据的获取 223
12.5.3 节目查询页面Tv.aspx 226
12.5.4 脚本文件Tv.js 228
12.5.5 服务器端处理模块Tv.ashx 231
12.6 小结 232
第13章 聚合搜索 233
13.1 需求分析和系统概况 233
13.1.1 需求分析 233
13.1.2 系统概况 234
13.1.3 文件结构 234
13.2 工具类Tools 235
13.3 SearchQuery类和Isearch类 240
13.3.1 搜索字符处理类SearchQuery 240
13.3.2 搜索基类Isearch 242
13.4 各搜索引擎专用类 244
13.5 聚合搜索的实现 254
13.5.1 主页面Search.aspx 255
13.5.2 搜索页面Top.htm 255
13.5.3 搜索信息文档Search.xml 257
13.5.4 搜索结果格式化文档Result.xsl 258
13.5.5 查询页面S.ashx 260
13.6 小结 262
第14章 无限级级联菜单 263
14.1 需求分析和系统概况 263
14.2 数据库和数据库操作类 265
14.2.1 数据库 265
14.2.2 数据库操作类 265
14.3 传统级联菜单 266
14.3.1 页面文件 266
14.3.2 服务器端代码 267
14.4 Ajax级联菜单 269
14.4.1 客户端mSelect类 269
14.4.2 处理类Handler.ashx 270
14.4.3 显示页面default2.aspx 271
14.4.4 列表框式级联菜单 271
14.5 小结 272
第15章 内文广告系统 273
15.1 需求分析和系统概况 273
15.1.1 内文广告系统的需求分析 273
15.1.2 系统概况 274
15.1.3 文件结构 275
15.2 数据库和存储过程 276
15.2.1 数据库 276
15.2.2 存储过程 277
15.3 核心代码 278
15.3.1 内文广告样式文件img/stylesheet.css 278
15.3.2 脚本文件 279
15.3.3 app_code文件夹 282
15.3.4 广告数组页面AdArray.ashx 284
15.3.5 具体广告内容页面AD.ashx 284
15.3.6 统计定向页面redirect.ashx 285
15.4 网站所有人和管理员相关的代码 285
15.4.1 登录页面login.aspx 286
15.4.2 验证码的实现 288
15.4.3 网站主页面siteUser.aspx 290
15.4.4 广告关键字管理页面Admin1.aspx 292
15.4.5 广告内容管理页面Admin2.aspx 294
15.5 小结 297
第16章 聊天室 298
16.1 需求分析和系统概况 298
16.2 3个实体类 299
16.2.1 聊天用户类 299
16.2.2 聊天信息类 300
16.2.3 聊天室类 301
16.3 客户端聊天室对象 304
16.4 Ajax聊天室的实现 306
16.4.1 Handler处理类 306
16.4.2 登录页面 308
16.4.3 聊天主界面 310
16.5 小结 314
第17章 可个性化定制的RSS 315
17.1 需求分析和系统概况 315
17.2 服务器端代码 317
17.2.1 Rss.cs 317
17.2.2 Handler.ashx 318
17.3 客户端工具方法和样式表 319
17.3.1 Tools.js 319
17.3.2 qucha-boxes.css 320
17.4 初始化脚本 322
17.4.1 初始化调用的脚本 323
17.4.2 创建一个RSS窗体 326
17.5 拖动、RSS和其他脚本 330
17.5.1 拖动相关脚本 330
17.5.2 RSS相关脚本 335
17.5.3 存储和清除cookie 337
17.5.4 其他脚本 338
17.6 小结 341
第18章 Web QQ 342
18.1 需求分析和系统概况 342
18.1.1 功能分析 343
18.1.2 文件结构 344
18.2 数据库 346
18.2.1 聊天用户 346
18.2.2 群 347
18.2.3 消息 348
18.3 服务器端底层代码 349
18.3.1 数据库操作类Sql 349
18.3.2 消息基础类BaseMsg 352
18.3.3 两人聊天消息类Msg 353
18.3.4 两人聊天消息表类MsgTable 354
18.3.5 群消息表类GroupMsgTable 356
18.3.6 群类MyGroup 359
18.3.7 聊天用户类ChatUser 361
18.3.8 工具类Tools 362
18.4 客户端基础代码 370
18.4.1 封装XMLHTTP 370
18.4.2 消息提示框myAlert 372
18.4.3 QQ菜单 374
18.4.4 拖动类 377
18.4.5 HTML编辑器相关的HTML代码 378
18.4.6 HTML编辑器相关的脚本代码 380
18.5 Web服务层 382
18.5.1 发送、接收聊天信息 382
18.5.2 添加好友 385
18.5.3 获取聊天记录 388
18.5.4 其他代码 390
18.6 登录 393
18.6.1 登录页面login.aspx 393
18.6.2 演示页面Default.aspx和加载脚本loadchat.js 394
18.6.3 主界面Frame.aspx 395
18.6.4 QQ菜单页Right.aspx 397
18.7 个人资料和个人设置管理 400
18.7.1 个人资料管理页面detail.aspx 401
18.7.2 个人资料管理的服务器端代码detail.aspx.cs 406
18.7.3 上线、隐身设置 409
18.8 联系人管理 410
18.8.1 寻找好友 410
18.8.2 查看待添加好友的资料 413
18.8.3 添加好友完成 416
18.8.4 删除好友和加入、移除黑名单 419
18.8.5 群 420
18.9 消息管理 424
18.9.1 主界面的消息管理 424
18.9.2 两人聊天页面Chat.aspx 427
18.9.3 两人聊天相关脚本js/chat.js 431
18.9.4 消息处理message.ashx 433
18.9.5 群聊的页面Groupchat.aspx 435
18.9.6 群聊的服务器端代码文件Groupchat.aspx.cs 438
18.9.7 群聊的脚本文件js/chat.js 439
18.9.8 聊天记录和系统消息显示页面msgrecord.aspx 440
18.9.9 聊天记录和系统消息对应的代码文件Msgrecord.aspx.cs 442
18.10 小结 444
Ajax是Web 2.0最主要的技术组成部分。它的应用大大提高了Web程序的用户体验,增强了网站的用户黏度。所以,现代网站开发中不同程度上采用了这种技术。ASP.NET Ajax是微软公司为ASP.NET程序员提供的官方Ajax解决方案。它为提高Ajax程序开发的效率和Ajax程序的稳定性、兼容性做出了很大的贡献。
本书并没有局限于介绍单纯的ASP.NET Ajax技术,因为微软公司把各种Ajax功能封装成了组件,虽然降低了开发难度,但是不利于理解Ajax的本质,当开发人员要解决一些非常个性化的问题时,单靠ASP.NET Ajax组件是不能解决问题的,必须要自己编写底层代码才能实现具体功能,因此本书更注重提高读者的独立开发能力。本书实例是在.NET平台上实现的各种Ajax效果,读者学会这些实例代码以后,也可以轻松地把实践知识移植到Java、PHP平台上。
如何学习本书
本书是案例开发性质的书籍,读者每学习一章都会有实质性的收获。在出版之前,笔者把这本书给很多Ajax初学者看过,总结出一个规律,如图1所示。
图1 成就感指数
根据图1,笔者建议读者一定要持之以恒地将本书所有章节彻底学习完。如果只学习一部分就自我满足、停滞不前,很可能会半途而废。一旦彻底学完本书,读者就能够独立解决各种问题,胜任Ajax程序员的几乎所有项目开发工作。
本书难度分布
为了让读者能够合理地使用本书,笔者特意绘制了一个难度分布图,读者可以根据图2中的标示进行学习。
图2 难度指数
本书特色
(1)贴近实际:书中所有模块实例均以实际应用为基础,重视培养读者的应用能力。
(2)实例详尽:20多个常用模块的开发几乎覆盖了Ajax程序应用的绝大多数领域。
(3)强调实用:书中的模块都有很高的重用性,读者稍加整理便可应用于实际项目中。
(4)注重效率:书中每个实例的讲解都力求简洁实用,注重图文结合。
(5)实例完整:书中的每个实例都可以单独作为一个项目运行和演示。
(6)分别采用ASP.NET Ajax框架和脚本驱动两种开发方式,即重视开发效率,又强调Ajax原理应用。
(7)开发环境均为微软公司官方最新版本,具有很好的代码可移植性和技术先进性。
本书的内容
本书分为3篇,分别是Ajax技术概述、ASP.NET Ajax组件应用和Ajax非组件开发。其中第一篇包括第1章和第2章;第二篇包括第3章至第5章;第三篇包括第6章至第18章。
第1章介绍了Ajax的概况、Ajax程序的开发模式以及本书的结构。其中重点介绍了Ajax程序的3种开发模式:XMLHTTP+Web Form、XMLHTTP+HttpHandler和Call Back。通过本章的学习,使读者对Ajax有初步认识。
第2章介绍了ASP.NET Ajax的概述和安装。本章对ASP.NET Ajax的主要组成部分、架构及优势进行了分析。并引领读者完成ASP.NET Ajax 1.0的安装,实现Hello Word程序。本章的学习,使读者对ASP.NET Ajax有初步认识。
第3章实现了Ajax GridView模块。本章中主要利用ASP.NET Ajax中的UpdatePanel控件,实现一个完全Ajax化的GridView应用。其中包括常用的数据增、删、改和浏览操作。
第4章实现了聊天室模块。本章中主要利用ASP.NET Ajax中的Timer控件开发聊天室实例。
第5章利用ASP.NET Ajax Control Toolkit中的控件实现一些实用功能。例如,利用Auto CompleteExtender控件实现自动完成的功能;利用NoBot控件实现自动拒绝垃圾发布程序;利用ReorderList控件实现拖曳排序;利用Rating控件实现评分功能;利用Accordion控件实现QQ样式的菜单。
第6章实现常用的注册登录功能。本章包括一个完整的注册、登录实例。详细讲述了客户端和服务器端程序的具体实现,并介绍了一个验证码程序生成方法。
第7章开发一个简易的通信录系统。其功能包括:用户登录、添加联系人信息、浏览联系人信息、修改联系人信息、删除联系人信息、用户注销功能等。
第8章开发一个留言本。其功能包括查看留言、在线留言、在线回复、留言管理等。本章中对XMLHTTP对象进行了封装。本书中下面章节对XMLHTTP对象的调用基本上都是基于本章的这个封装文件。
第9章介绍分页模块的实现。数据分页程序应该满足两方面的要求:用户体验和执行效率。本章中采用Ajax一般分页和滑动分页两种方式来改善用户体验,采用一个优化的存储过程以提高数据分页的执行效率。
第10章实现文件上传显示进度条功能。本章中利用ASP.NET的HttpModule和Call Back,封装了一个进度条控件。
第11章开发相册模块。本章利用Prototype和Scriptaculous框架实现简易的相册管理功能。Scriptaculous框架的使用大大增强了Web界面的视觉效果。
第12章开发Ajax小偷模块。Ajax技术和小偷程序的结合使得小偷程序进一步发展。本章利用Ajax小偷实现了天气情况查询、在线翻译、电视节目时间表查询等功能。
第13章实现聚合搜索功能。这一章可以看作是小偷模块的继续。本章中把百度、Google、雅虎、爱问、搜狗、中搜6大搜索引擎的功能集成到一个页面中,并对广告内容进行排除。
第14章开发无限级级联菜单。本章中分别实现传统级联菜单和Ajax级联菜单,并对两者进行对比,使读者深刻理解Ajax级联菜单的优势。
第15章开发内文广告系统。内文广告,即将文章内容中出现的关键词自动生成广告链接。当鼠标光标滑过关键词链接时,出现广告窗体,达到广告宣传的目的。这是一种新兴的广告形式。
第16章继续进行聊天室开发。本章与第4章实现的功能基本相同。其不同之处在于,本章没有采用任何Ajax框架。通过两种不同开发方式的对比,读者可以更深刻的认识Ajax程序的基本原理。
第17章开发可个性化定制的RSS系统。RSS用来对网络上的内容进行聚合,以方便用户访问。本章中的RSS模块可以利用鼠标光标拖动,并在当前位置保存下来,本系统是聚合与个性化的完美结合。
第18章开发Web QQ。本系统是本书中综合性最强的一个实例。本例的目标是模仿OICQ开发一个Web版的QQ。其主要功能包括:两人聊天、多人聊天,新消息到达自动提示,添加、删除好友,添加、删除黑名单,个人信息管理、头像设置、个人上线、隐身设置等。
本书中所讲述的这些实例都是从实际应用中抽象出来的,具有很强的实用性。读者深刻领会后,只要稍加修改这些示例便可应用于自己的开发项目中。同时,通过对这些模块开发的学习,将使读者掌握.NET领域Ajax程序的开发技术,为以后应用开发打下坚实基础。
适合的读者
• Ajax程序员
• ASP.NET程序员
• 网站UI开发人员
• JavaScript开发人员
• 网页特效制作人员
• 网站管理维护人员
• 有一定ASP.NET网站开发基础,想学习Ajax的读者
本书作者
本书由王宏宇组织编写,同时参与编写、资料整理和代码编写的有张金霞、刘丹、刘冠军、罗思红、孙飞、王朋章、王石磊、王新平、文奇、吴琪、席国庆、谢超文、臧勇、张国强、张家春、郭玉敏、贺道权、胡斯登、江成海、姜海峰、李峥、利建昌、栗菊民、刘波等,在此一并表示感谢。
编 者
2007年6月
无封面