基于AJAX技术创建的异步方法应用研究

来源 :计算机时代 | 被引量 : 0次 | 上传用户:hesur
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 遵循AJAX技术的基本原理,创建了一个简单的异步引用方法,并给出登录实例来说明如何实现该方法的引用,减少代码冗余。主要阐述了通过创建方法,并引用方法到不同Web应用程序中,实现了代码的优化。
  关键词: AJAX; XML Http请求; 异步引用; 登录实例; 创建方法
  中图分类号:TP311.1 文献标志码:A 文章编号:1006-8228(2014)03-33-03
  0 引言
  AJAX是Web应用的一种新方法。它使客户端能在后台访问服务器并取回用户所需数据,从而避免了整个页面的刷新。这为交互较多、频繁读数据的Web应用提供了一个很好的解决方案[1],因此得到了广泛的应用。
  1 AJAX的工作原理
  AJAX是由Adaptive Path公司的Jesse James Garrett命名的,是Asynchronous JavaScript and XML的缩写,即异步 JavaScript和XML[2]。它并不是一门新的语言或技术,本质上只是将已有的多种技术,按一定的方式组合在一起,共同协作发挥出更加强大的作用,它主要用于动态网站开发[3]。
  基于AJAX的Web应用不同于传统的Web应用,传统的Web应用通常是由用户发出一个HTTP请求到Web服务器,并将结果发送回客户端进行显示。这是一种单线程的处理方式。而基于AJAX的Web应用则在客户端和Web服务器之间添加了—个通过JavaScript编写的中间层,即AJAX引擎,从而使得用户操作与服务器响应异步化。在不刷新整个页面的前提下,用户向服务器端发送HTTP请求,服务器端对客户端发来的请求进行处理后,将响应发送给客户端。客户端再次利用 XMLHttpRequest对象接受服务端的响应,并利用DOM将结果显示给用户[4~6]。整个通信过程是在后台异步进行的,不会中断用户当前的操作。AJAX的Web应用模型如图1所示。
  2 创建AJAX异步引用方法
  AJAX技术的核心是JavaScript构造的XML Http Request对象,而XML Http Request本身提供了一系列属性和方法来向服务器发送异步的http请求。在服务器处理用户请求的过程中,XML Http Request监听服务器的状态,并根据这些状态指示JavaScript作相应的处理[7]。当服务器顺利完成响应用户行为的动作,并将响应数据返回时,XML Http Request对象能够回调响应的处理函数,完成AJAX的调用。
  为保障业务流畅简洁,编写代码要层次清楚、简短,并在基于JavaScript构造的XML Http Request对象的工作原理上专门编写关于AJAX异步引用的方法[8]。此方法创建在名为tools工具箱的命名空间内。关键代码如下:
  Var tools={
  //创建区分浏览器(IE浏览器和非IE浏览器)的方法
  isIE:function() {
  var str=window.navigator.userAgent; //判断浏览器类型及版本
  if(str.indexOf(“IE”>=0)) {
  return true;
  };
  return false; //indexOf()方法若找不到相同字符则返回-1
  },
  //创建XMLHttpRequest对象,使用HTTP方法获取HTTP对象
  getHttp:function() {
  if (tools.isIE()) {
  //IE系列获取HTTP对象
  return new ActiveXObject("Microsoft.XMLHTTP");
  };
  //非IE系列获取HTTP对象
  return new XMLHttpRequest();
  },
  //HTTP的GET方法
  getHttpReq:function(url,fun) {
  var async=true; //异步交互的方式
  var http=tools.getHttp();
  //发送地址,使用时间戳解决缓存问题,保证每次发送的地址不同
  If(url.indexOf(“?”)>=0) {
  url+=”&t=”+(new Date()).getTime();
  };
  If(url.indexOf(“?”)<0) {
  url+=”?t=”+(new Date()).getTime();
  };
  //设置发送方式,数据传输方式为GET,false=同步
  http.open(“GET”,url,async);
  //定义服务器处理完成之后的回调函数
  If(async) {
  //对指定状态变化时的事件句柄定义相应方法
  http.onreadystatechange=function() {
  if(http.readyState==”4”) { //当前状态4=完成
  if(http.ststus==”200”) {
  //服务器运行状态,其中200=服务器执行成功
  fun(http.responseText); //服务器运行状态的说明文字
  return;
  };
  fun(“Service error”+http.status); //服务器执行不成功则报错   };
  };
  };
  //发送
  http.send(null); //对于GET方式传输小规模数据,无需传递参数,固设为null
  };
  3 AJAX异步引用方法应用实例
  下面给出一个简单的登录实例来简述AJAX异步方法引用的应用。单击登录按钮,无须页面提交,就会实现数据验证[9]。
  前台页面JavaScript核心设计代码如下:
  var _login={
  //用户登录业务逻辑1-验证数据
  valiLogin$1:function() {
  //获取帐号
  var access=_login.$("access"); // access为页面获取账号框的id
  access=access.value; //获取用户输入的帐号值
  //判断数据
  if(access.length<=0) {
  _login.disWarn("用户名不能为空");
  //引用空间里创建的错误提示方法
  return;
  };
  //错误提示方法
  disWarn:function(str) {
  str.style.color="red";
  },
  ……
  //发送数据,将从前台获取到的账号和密码值传入后台校对
  _login.userLoginSend({
  "userLoginAccess":access,
  "userLoginPwd":pwd
  });
  }
  ……
  //数据层 (传输HTTP)
  //用户登录-委托
  userLoginAction:{
  action:false,
  name:"",
  fun:""
  },
  //用户登录-发送到后台asp获取数据
  userLoginSend:function(obj) {
  var url="./ajax.asp";
  url+="?userLoginAccess="+obj.userLoginAccess;
  url+="&userLoginPwd="+obj.userLoginPwd;
  url+="&action=login";
  tools.getHttpReq(url,_login.userLoginOk); //应用tools命名
  空间里的异步通信get方式
  },
  //用户登录-返回
  userLoginOk:function(json) {
  if( _login.userLoginAction.action ) {
  _login.userLoginAction.action=false;
  window[_login.userLoginAction.name]
  [_login.userLoginAction.fun](json);
  return true;
  };
  return false;
  },
  ……
  };
  上述实例中的数据层引用了tools命名空间里的AJAX异步通信的get方式。当遇到不同Web应用程序的不同功能时,都可以调用该方法[10]。当项目工程庞大并且功能错综复杂时,通过调用tools工具里的AJAX异步引用方法可以实现减少代码的冗余,降低相同代码的重复率。
  如图3所示,当用户欲进入登录系统行使相应的权限时,需输入验证信息。输入的验证信息与后台数据库中信息相同则登录成功。否则当用户输入的信息不符合网络安全规定时,提醒用户输入的信息有误,其页面如图2所示。
  
  图2 用户输入数据验证不通过
  4 结束语
  AJAX之所以近年来大规模地投入应用,在于它打破了使用页面重载的惯例技术组合,可以在不中断交互流程的情况下,重新加载Web页面,对网页进行局部刷新,从而实现动态更新和流畅舒适的交互用户体验[14]。从本文所演示的登录实例可见,如果能将AJAX技术合理简单地创建成方法,再引用到不同Web应用程序中,不仅整体代码层次清楚简练,而且当有需要多次调用AJAX异步调用方法时,代码量可大大缩短。
  
  图3 用户登录成功图
  参考文献:
  [1] 向春,沈建新.AJAX核心技术解析[J].信息技术名,2007.36(2):
  79-81
  [2] Jesse James Garrett.Ajax: A new approach to web Applications.
  http://www.adaptivepath.com/publications/essays/archives/000385.php.2005.
  [3] 张俊妍.AJAX技术在动态网站开发中的应用研究[J].现代计算机,
  2011.2:62-63
  [4] 王义勇,何月顺.AJAX的原理及其在Web开发中的应用[J].科技广
  场,2006.7:66-68
  [5] 田原.基于AJAX的教学Web应用[J].辽宁工程技术大学(自然科学
  版),2007.5:737-739
  [6] 陈琼.AJAX老技术,新外衣[J].互联网周刊,2005.8(27):52-53
  [7] 陆海晶,刘万军.基于Ajax的Web应用技术的研究与实现,2007.7
  (3):415-418
  [8] 吴学义,黄永平,郭娜等.基于AJAX的B/S架构及应用[J].吉林大学
  学报(信息科学版),2007.25(3):314-318
  [9] 柯自聪.Ajax开发精要[M].电子工业出版社,2006.
  [10] 王义勇,何月顺.AJAX的原理及其在Web开发中的应用[J].科技广
  场,2006.7:66-68
其他文献
导语:大量的事实表明,现实生活中发生的真实案件比任何人的想象力都更加丰富,再熟悉法条,也不一定能准确合理妥当地办好案件。在没有遇到质疑和挑战时,认为自己提出的见解理由
本文通过对学分银行组织架构、业务模式和用户群体深入分析后,提出基于云计算技术的学分银行信息平台架构设计,并结合应用环境的多样性探讨了平台研发和实施过程中的关键技术
在高中阶段,政治教学是其中的重要组成部分,对学生世界观、人生观和价值观的形成有着重要的影响。因此,在教学中,教师不能只重视理论知识的讲述,还需要培养学生的思维能力,最
笔者认为,应在刑事重审和再审程序中有区别地建立更换公诉人机制.理由如下:建立更换公诉人机制,是正确指控犯罪的现实需要.目来前,根据我国现行刑事诉讼法及人民检察院刑事诉
期刊
为探讨好氧污泥颗粒化过程及其性能,在气升式间歇反应器中培养好氧颗粒污泥,并对模拟生活污水的处理效果进行连续监测。实验表明,成熟好氧颗粒污泥性能良好,沉降速度最高为33