日期:2014-05-16  浏览次数:20729 次

AJAX注册
Ajax编写用户注册实例及技术分析2009-01-04 16:46我所举的这个例子是一个企业用户注册时的一个应用,当用户注册时检查用户名和企业名是否可用,以前的做法是在旁边加一个按钮,点击“检查”,就向服务器发出请求,
然后等待……服务器返回信息,继续操作。如果我们用Ajax技术来实现以上的操作则不必等待服务器返回信息,
用户输入用户名或企业名称的时候,当输入文本框失去焦点的时候,则会自动向服务器发出请求,用户继续做下面的操作,
不必点击“检查”,也不必等待服务器返回信息,检查与用户操作是异步的,可同时进行。当服务器信息返回的时候,会自动在面页相应位置显示返回信息,
不必刷新页面,相当于局部刷新的效果。

  下面我们来看代码吧。

  HTML页面的完整代码如下:

<%@page language="java" contentType="text/html;charset=GBK"%>
<script language="javascript" type="text/javascript">
<!--
/**//**Ajax 开始 by Alpha 2005-12-31*/

var http = getHTTPObject();

function handleHttpResponse()
{
 if(http.readyState == 4)
   {
     if(http.status == 200)
      {
         var xmlDocument = http.responseXML;
        if(http.responseText!="")
           {
        document.getElementById("showStr").style.display = "";
      document.getElementById("userName").style.background= "#FF0000";
      document.getElementById("showStr").innerText = http.responseText;
        }
           else
           {
       document.getElementById("userName").style.background= "#FFFFFF";
       document.getElementById("showStr").style.display = "none";
        }

  }
  else
     {
   alert("你所请求的页面发生异常,可能会影响你浏览该页的信息!");
   alert(http.status);
  }
 }
}

function handleHttpResponse1()
{
if(http.readyState == 4)
{
  if(http.status == 200)
     {
   var xmlDocument = http.responseXML;
   if(http.responseText!="")
       {
    document.getElementById("comNmStr").style.display = "";
    document.getElementById("comNm").style.background= "#FF0000";
    document.getElementById("comNmStr").innerText = http.responseText;
   }
       else
       {
    document.getElementById("comNm").style.background= "#FFFFFF";
    document.getElementById("comNmStr").style.display = "none";
   }

  }
  else
     {
   alert("你所请求的页面发生异常,可能会影响你浏览该页的信息!");
   alert(http.status);
  }
 }
}

function chkUser()
{
 var url = "/chkUserAndCom";
 var name = document.getElementById("userName").value;
 url += ("&userName="+name+"&oprate=chkUser");
 http.open("GET",url,true);
 http.onreadystatechange = handleHttpResponse;
 http.send(null);
 return ;
}
function chkComNm()
{
 var url = "/chkUserAndCom";
 var name = document.getElementById("comNm").value;
 url += ("&comName="+name+"&oprate=chkCom");
 http.open("GET",url,true);
 http.onreadystatechange = handleHttpResponse1;
 http.send(null);
 return ;
}

//该函数可以创建我们需要的XMLHttpRequest对象
function getHTTPObject()
{
 var xmlhttp = false;
 if(window.XMLHttpRequest)
   {
  xmlhttp = new XMLHttpRequest();
  if(xmlhttp.overrideMimeType)
     {
   xmlhttp.overrideMimeType('text/xml');
  }
 }
 else
   {
  try
     {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  }
    catch(e)
    {
   try
       {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }