
交互网页设计
——Ajax与jQuery技术实现网页异步交互
一个优秀的网站通常会有以下几个方面的优势:漂亮的设计、友好的界面、规范的结构、智能化的后台处理以及充实的内容,另外还有一个不可忽视的就是良好的交互性。网站的交互性通常是给用户网页浏览过程中良好体验的一个非常重要的环节,满足用户的浏览需求,对用户的选择作出“及时”的响应,是交互性网页设计的关键。网页设计者一定要明白,缺乏交互性的网站即使看上去很美也是没有生命力的。
“交互”的本质就是用户(客户端)发出请求,通过网络传送到服务器(服务器端),服务器端处理用户的请求后得到结果,再次通过网络传送到客户端,客户端将返回的结果展示给用户。现在的交互式网页设计技术中,使用的最为广泛的就是Ajax技术,那么什么是Ajax呢?如何实现Ajax的应用呢?以下就围绕着这两个问题并通过实例进行说明。
一、异步交互的实现:
1、同步Web应用模型与异步Web应用模型:
传统的网页设计技术中,“交互”就已经存在,但与Ajax异步通信之间存在有一定的区别,看下面图示:
客户端
用户 用户
活动 活动
H
请求 CSS
程序处理
服务器端
客户端
客户界面
JavaScript 显示
Ajax引擎
H
请求
程序处理
服务器端
从图示中,可以看到,传统的Web应用模型中,客户端与服务器端是直接通信的,客户端发出请求后,一直等待服务器端的返回数据,直到服务器端处理完成返回数据后,客户端才会显示出处理结果,中间的数据传递过程和处理过程就是客户的等待的过程,浏览器中往往是显示一片空白,这就是同步应用模型,其最大缺点就是:页面全刷新,用户等待时间长,体验差。
异步Web应用模型中,弱化了客户界面前台的表单功能,不再由表单来实现数据的传递,转而通过Ajax引擎向服务器端传递数据,Ajax功能的实现则通过JavaScript语言来完成,服务器端返回的数据也通过Ajax引擎,利用JavaScript来操作Html DOM更新页面。由于与服务器端的数据交流是由Ajax引擎完成,客户在前台的操作是不会被打断的,即数据在传递的过程中,用户可以继续其他的操作,这实际上也就是我们常说的“局部刷新”技术,用户的体验是非常完美的,在良好的网络状态下,甚至与我们的本机应用程序操作体验近似。
2、Ajax异步通信技术:
Ajax(Asynchronous JavaScript And XML,异步JavaScript和XML)并不是什么新的语言或技术,而是使用JavaScript和XML完成的异步发送请求。
Ajax实际上就是JavaScript语言操作了一个新的对象,这个对象就是XMLHttpRequest对象,XMLHttpRequest就是异步发送请求的对象,这就是Ajax技术的核心,而开发Ajax程序则需要完成五件事情,分别是:获取XMLHttpRequest对象、注册回调方法、打开请求、发送请求、编写回调方法。
●获取XMLHttpRequest对象:由于不同的浏览器对W3C标准的支持程度是不同的,所以在网页编程中一定要考虑到浏览器的兼容问题
var xmlHttp; XMLHttp");
}
/js/">
首字母
乡镇
4、JavaScript脚本程序:
前台的HTML文件中,表单
3、Js脚本设计:
菜单项的点击,将会激活js脚本中相应的代码,脚本中使用了jQuery代码应用Ajax技术导入右侧表单,并将表单中的下拉列表初始化,并为下拉列表及提交按钮等绑定事件,实现用户的提交请求等功能。
ind('click',function(){
$("#lefter a").removeClass("cur");
$(this).addClass("cur");
bn=$(this).attr("bname");
switch(bn)
{
case "qiyeinfo":
$("#righter1").load("../html/",function(){
rightAlign();
var curtime=new Date();
curtime=();
al(); $.get("../asp/",{letter:tLetter,time:curtime},function(d){
$("#xiangzhengname").empty().append(d);
});
}; $.get("../asp/",{time:curtime},function(d){
$("#xzletter").append(d).change(getXzOpt);
getXzOpt();
});
$.get("../asp/",{time:curtime},function(d){
$("#hangyeselect").append(d);
});
$.get("../asp/",{time:curtime},function(d){
$("#guimoselect").append(d);
});
$("#autocreate").live("click",function(){
var tmp1=parseInt()*10000);
var tmp2="";
for(i=0;i<3;i++) {tmp2+=(97+parseInt()*26)); }
var tmp=()+tmp1
$("#pass").val(tmp);
});
/**** 企业名称录入时自动填写汉字的拼音 *****/
$('#qyname').bind('change',{here:$('#qyEname')},writePinYin); $('#qyname').bind('keyup',{here:$('#qyEname')},writePinYin);
});
showTable(bn);ive("click",function(){
var tbname=$(this).attr("tablename");
var notHasNull=checkForm(tbname);
if(!notHasNull)
{
alert("数据不完整!");
return;
}
var ilen=$(".isdata").length;
var sendValue="tablename="+tbname+"&";
for(i=0;i tempValue=escape($(".isdata").eq(i).val()); sendValue+="input"+i+"="+tempValue; if(i!=ilen-1) sendValue+="&"; } $.post("../asp/",sendValue,function(data){ //添加记录后显示表内数据 showTable(tbname); //清除表单中的数据 clearForm(tbname); alert(data); }); }); 4、服务器端ASP程序设计: 从上段JS程序中可以看到,内部有多段Ajax程序与服务器端的多个ASP程序进行了交互,这里不将ASP程序全部列举。 文件的作用有两个,一是表单被调入时即在表单下方显示出表内最近被更新的数据,二是当添加了新数据时,马上将新数据显示在表格内,下面是它的源程序代码: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <% =65001%> <% ="utf-8" %> <% =999 Set rs=("") =true tbname=("tablename") 'curpici=("pici") if tbname="" or tbname=empty then tbname="xiangzheng" end if if tbname="stu" or tbname="qiyeinfo" then topten="top 10" else topten="" end if sql="select "&topten&" * from "&tbname&" order by id desc" dim fieldname select case tbname case "qiyeinfo" fieldname=array("企业基本信息(最近录入) case ………… end select (" sql,conn,3 (" (" for i=1 to (" next (" '显示出所有的记录 while not (" (" (" for i=1 to (" next (" wend (" () %> 5、页面交互分析: 现在我们看看具体执行时的效率,为了方便,我们使用FireFox浏览器的插件FireBug对页面的代码执行过程及时间上进行分析。 下图是我们点击左侧“企业基本信息”链接后,执行的一系列与服务器的交互操作: 可以看到,通过Ajax方式一共与服务器端有六次数据请求,我们通过下表对其功能分别进行说明: 1)提交的数据请求参数time,这只是一个时间戳: 2)响应Http头信息与请求Http头信息,从请求头信息最后一行可以看到请求对象使用XMLHttpRequest,说明这是一次Ajax数据请求: 3)响应数据即从服务器端返回给客户端的数据,可以看到返回的正是这个下拉列表中所需的列表项的HTML代码: 6、小结: 如果我们继续操作这个页面,例如点击“编辑”按钮,点击“删除”按钮等,都可以在FireBug中看到我们向服务器提交了请求,服务器完成相应的操作并返回了我们的需求,这就是所谓的“交互”网页了。 网页设计者要在前台设计出客户提交请求的功能,也要在后台设计出服务器端的处理过程,并返回处理结果给客户端,这一系列的工作是非常复杂的,我们不仅要考虑页面的美观、实用性,更需要考虑用户在使用时的舒适度及数据返回的及时性等等。 Ajax技术非常实用,给我们的网上冲浪带来了良好的体验,对于网页设计者来说,Ajax技术却不可滥用,实践证明,网页的展示速度与网页内容的多少并没有很大关系,其时间大部分被消耗在网络传输过程中,所以网页设计者应该考虑尽量地减少与服务器端的数据交换。Ajax的每一次使用都会至少与服务器产生一个来回的数据交流,如果一个页面中,有太多的局部刷新,将会使页面展示速度严重滞后,反而会给网站带来负面影响。 jQuery是我们使用Ajax最方便的工具,他的用途也绝不仅限于此,他有出色的DOM操作封装,他有可靠的事件处理机制,完美的浏览器兼容性,丰富的插件支持等等,这些都值得我们去学习应用。 参考文献 [1]《锋利的jQuery》 作者:单东林 张晓菲 魏然 人民邮电出版社 [2]《》 jQuery官网"&fieldname(0)&"
")
")") ")操作 ID ")"&fieldname(i)&" ")") ")") ") "&rs(i)& " ")
我们再看看第4次Ajax交互的过程:次序 服务器端程序 耗用时间 作用 第1次 56ms 远程导入表单 第2次 77ms 显示下方表格初始数据 第3次 66ms 初始化乡镇首字母下拉列表 第4次 1ms 初始化行业下拉列表 第5次 110ms 初始化规模下拉列表 第6次 3ms 初始化乡镇名下拉列表
