步步解析Ajax


Ajax是什么?

           Ajax的全称是Asynchronous JavaScript and XML 翻译为异步JavaScript和XML,是指一种创建交互式网页应用的网页开发技术。


Ajax原理: 

    概括的来描述,Ajax是分层思想的体现.它的工作原理相当于在用户和服务器之间加了—个中间层,使得用户操作与服务器响应异步化。这样一来便会把以前的一些服务器负担的工作转移到客户端,利于客户端闲置的处理能力来处理相关请求,减轻服务器的负担.


Ajax实例:

  Ajax应用的场景非常广泛,而最常用的场景之一是验证用户信息,尤其是用户ID信息,例如,在注册CSDN的时候,如果输入一个用户昵称,而服务器中已经有次用户,当你输完鼠标离开的时候会在后面进行提示:用户名已被占用.下面将从代码的角度来分析此功能的实现的整个过程.


计算机生成了可选文字: CSOn会员一注册O填写会员信息O通过邮件确认O注册成功帐户信息*用户名:Inqqls(5一20位字母、ol用户名已被胡。l数字或下划线组台,首字符必须为字母。)*密码:(为了您的帐户安全,强烈建议您的密码使用字符十数字等多种不同类型的组合,并且密码长度大于5位。*再次输入密码:(确保密码输入正确。*E一爪ail:(教活码将会发到您的邮箱中,只有教活帐户才可以使用{


  Ajax进行异步用户ID验证主要的过程如下:

1 触发相关事件:如onblur()

2 创建Ajax核心对象:XMLHttpRequest.

3 设置相关参数变量:如请求方式,URL变量(注意缓存问题)和是否异步.

4 通过onreadystatechange方法获取Ajax引擎状态并进行相应的验证.

5 完成验证.

 

整个过程的代码示例如下:

 

第一步:出发相关事件:onblur()

 

(以下代码在添加\注册用户页面之中)

//通过input输入域制定验证方法onblur.span用户显示相关提示信息.

<inputname="userId" type="text" class="text1"id="userId"

size="10"maxlength="10" value="<%=userId %>" οnblur="validate(this)"  οnkeypress="userIdOnKeyPress()">

<spanid="spanUserId"></span>

 

       

      第二步:创建Ajax核心对象:XMLHttpRequest.

 

  //验证用户代码是否已经存在

functionvalidate(field){

//焦点一离开就创建对象,如果输入为空,则检查

 

if(trim(field.value).length!= 0){

 

//创建XMLHttpRequest核心对象.

varxmlHttp=null;

 

//表示当前浏览器不是ie,如ns,firefox

if(window.XMLHttpRequest){

xmlHttp= new XMLHttpRequest();

}else if (window.ActiveXObject) {

xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");

}

 

      第三步:设置相关参数变量:如请求方式,URL变量(注意缓存问题)和是否异步.

 

//定义url变量,为了清除缓存问题可以加上时间标签,为了防止整个字符串不一样,从而避免缓存问题.

varurl="user_validate.jsp?userId="+trim(field.value)+"&time:"+new Date().getTime();

 

//设置对象的参数,并不会马上执行.

//设置的请求方式为GET,请求的URL,设置为异步提交

 

xmlHttp.open("GET",url, true);

//将方法地址等参数信息给onreadystatechange属性.

 

    第四步: 通过onreadystatechange方法获取Ajax引擎状态并进行相应的验证.

 

//此处采用的是匿名函数技术

xmlHttp.onreadystatechange=function(){

 

//判断引擎的状态是否是成功返回

if(xmlHttp.readyState== 4){

//判断引擎和服务器(Tomcat)的状态判断是否成功相应.

if(xmlHttp.status==200){

 

 

if(trim(xmlHttp.responseText)!= ""){

document.getElementById("spanUserId").innerHTML= "<font color ='red'>" + xmlHttp.responseText +"</font>";

}else{

document.getElementById("spanUserId").innerHTML="";

}

 

}else{

alert("请求失败,错误码"+ xmlHttp.status);

}

}

 

}

//将设置信息发送到Ajax引擎.

//GET请求方式参数为null,Post请求方式为body

xmlHttp.send(null);

}else {

document.getElementById("spanUserId").innerHTML="";

}

}

第五步:到相关验证页面完成验证.

 

验证页面:user_validate.jsp.

com.bjpowernode.drp.sysmgr.manager包是用户管理的相关逻辑.这里只用到了其中的查找用户方法.

 

<%@page language="java" contentType="text/html;charset=GB18030"

    pageEncoding="GB18030"%>

<%@page import ="com.bjpowernode.drp.sysmgr.manager.*" %>

 

<%

 

StringuserId = request.getParameter("userId");

    if(UserManager.getInstance().findUserById(userId) != null){

out.println("用户已经被占用");

 

}

 

%>

 

显示验证结果类似上图。

 

通过以上的例子完整的演示了整个Ajax的运作流程。

 

总结:

      Ajax并不是一项新技术,而是多项技术的有机结合.Ajax不是万能的,在适宜的场合使用Ajax,才能充分发挥它的长处,改善系统性能和用户体验,绝不可以为了技术而滥用。Ajax的特点在于异步交互、动态更新Web页面,因此它的适用范围是交互较多、频繁读取数据的Web应用。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值