十:使用Ajax改进用户体验
十:使用Ajax改进用户体验
asynchronous :异步的
synchronous :同步的
focus :焦点
direct :直接
remote :远程
initial :初始化
目标
10.1:Web 2.0
10.1.1:互联网前世今生
10.1.2:Web2.0的特点
10.2:Ajax
10.2.1:为什么使用Ajax
10.2.2:什么是Ajax
10.2.2:怎样使用Ajax
10.3:Ajax框架
小结:
目标
10.1:Web 2.0
10.1.1:互联网前世今生
黑暗年代:数据和信息不通过电子途径传播和共享的年代。
静态网页时代:互联网提供静态网页给人们浏览。
动态网页时代:动态网页技术的发展史人们可以在互联网上发布信息,数据库技术的发展使互联网开始指导人们的事务。
Web 2.0时代:更佳的用户体验和更高的参与程度(如果说互联网的出现是一次革命,那Web2.0的登场时另外一次革命)。
10.1.2:Web2.0的特点
1),用户贡献内容;2),内容聚合:RSS;3),更丰富的“用户体验”,新的交互方式。(RSS是将信息规范化的一个标准,最主要的应用在Blog[部落格]中)
用户体验的七个目标:有价值,实用,好用,悦人,可信,易寻找,可获取。用户体验:使用软件(或浏览网站)是,很容易地找到想要找的东西,轻松完成想完成的事,视觉效果很舒服,用完后心情好。
应用:Web2.0站点普遍使用了Ajax等技术,出现了Tag等很多新的交互方式,让用户使用软件的过程连贯,方便,自然。举例:Google页面输入框的自动补全功能;可以在自己页面中添加Tab页和“小窗口”通过RSS聚合内容;小窗口可以关闭,最下化和进行个性化设置......
10.2:Ajax
10.2.1:为什么使用Ajax
Ajax技术:通过JavaScript发送请求到服务器,并得到返回结果而只是刷新局部页面(做到“无刷新”)。
无刷新技术:只刷新页面的一小部分,而不用整个页面都刷新。优点:1,避免重复加载,浪费网络资源;2,提供连续的用户体验,不被页面刷新中断。例如:Chinaren首页上的登录功能,tudou网上单击其他按钮并不影响视屏的连续播放,Google地图提供的拖动,放大,缩小等类似桌面程序的用户体验.....
10.2.2:什么是Ajax
Ajax——Asynchronous(异步的),JavaScript And Xml.Ajax只是整合了几种现有的技术:JavaScript,XML和CSS。
解释:主要是JavaScript:通过Javascript的XMLHttpRequest对象完成发送请求道服务器并获得返回结果的任务,然后使用Javascript更新局部的网页。
异步指的是:Javascript发送请求后并不是一直等着服务器的响应,而是发送请求后继续做别的事,请求响应是异步完成的。
XML一般用于请求数据和响应数据的封装,CSS用于美化页面样式。
10.2.2:怎样使用Ajax
编写Ajax代码前先开发好服务器端程序。然后,使用Javascript的XMLHttpRequest发送请求得到结果。
创建XMLHttpRequest对象实例的代码:
function createXmlHttpRequest(){
if(window.ActiveXObject){//如果是IE浏览器
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){//非IE浏览器
return new XMLHttpRequest();
}
}
使用XmlHttpRequest对象分四个步骤:
代码:
var xmlHttpRequest;
function checkUserExists(OCt1){
var uname=oCt1.value;
if(!uname){//??
alert("用户名不能为空");
oCt1.focus();
return ;
}
//发送请求道服务器,判断用户名是否存在
//请求字符串
var url="?operate=doCheckUserExists&uname="+uname;
//1,创建XMLHttpRequest组件
xmlHttpRequest=createXmlHttpRequest();
//2,设置回调函数
xmlHttpRequest.onreadystatechange=haolejiaowo;
//3,初始化XMLHttpRequest组件
xmlHttpRequest.open("GET","url",true);
//4,发送请求
xmlHttpRequest.send(null);
}
function haolejiaowo(){
if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
var b=xmlHttpRequest.responseText;
if(b=="true"){
alert("用户名已存在");
}else{
alert("用户名可以使用");
}
}
}
//
//
解释:
第2句代码:onreadystatechange是xmlHttpRequest对象的一个事件,haolejiaowo是一个JavaScript方法名。含义:在xmlHttpRequest对象的状态发生改变时调用haolejiaowo这个函数。
第3句代码:xmlHttpRequest对象的open方法用于初始化xmlHttpRequest对象,参数(请求发送的方式,请求的url,请求同异步否);true表示是异步的(在调用send方法发送请求后不用等请求响应继续执行后面的代码)。
每次xmlHttpRequest对象状态改变都会调用这个方法。
xmlHttpRequest对象有5种状态:0,未初始化;1,已初始化;2,发送请求;3,开始接受结果;4,接受结果完毕。故而,我们只处理状态readyState为4的情况。
xmlHttpRequest.status表示服务器响应的状态码:200,正常;404,not found(没找到资源);500,服务器出错。
只处理正常响应的情况,即xmlHttpRequest.status为200的情况。当xmlHttpRequest的readyState为4和status为200同时满足时,就可以从xmlHttpRequest.responseText中得到服务器响应的字符串了。
10.3:Ajax框架
Ajax框架简化编码,若使用DWR框架(http://getahead.org/dwr)需要先将Jar包导入项目,在web.xml中配置,并在/WEB-INF/下创建dwr.xml配置文件。
在web.xml中的配置:
<servlet>
<servlet-name>dwr</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>