AJAX应用之注册用户即时检测

2016-02-19 12:58 3 1 收藏

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的AJAX应用之注册用户即时检测教程,一起来看看吧!超容易上手~

【 tulaoshi.com - Web开发 】

AJAX的无刷新机制使得在注册系统中对于注册名称的检测能即时显示。

常见的用户注册是用户输入用户名,后台程序检测数据库中用户名是否重复而做出注册的成功与失败之提示(当用户注册重名时将返回重新注册),或者稍微人性化一点就是在用户名文本框后添加一个检测按钮,让用户检测后再做注册。

以上操作,对于用户体验方面来说是比较“差劲”的,一个很好的用户体验就是:当用户输入完注册用户名后,Web系统应能即时检查并即时显示,并在检查和显示的同时不影响当前页面的操作。这也就是“异步获取数据”的要求,而这正是AJAX的强项

比如如下的示例就能展现AJAX的该功能:

http://www.cnbruce.com/test/ajax/t1.htm

当输入已经存在的用户名(如cnbruce、cnrose)时页面将显示重名不能注册(false),否则将显示可以注册(true),这为用户的注册提供了快速的参考,用户体验至上。

那么下面就来说说是如何来实现这样的功能的。

其实通过如上的t1.htm的源代码,各位就可以看到AJAX的精髓

首先是定义XMLHttp对象


var xmlHttp = false;
try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e2) {
    xmlHttp = false;
  }
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
}



关于这部分内容的说明请看:
http://www.cnbruce.com/blog/showlog.asp?cat_id=34&log_id=987

接着是自定义函数


function callServer() {
  var u_name = document.getElementById("u_name").value;
  if ((u_name == null) || (u_name == "")) return;
  var url = "cu.asp?name=" + escape(u_name);
  xmlHttp.open("GET", url, true);
  xmlHttp.onreadystatechange = updatePage;
  xmlHttp.send(null);  
}


该函数的主要功能就是异步获得cu.asp的内容,在此前将先提取当前页表单元素“u_name”即用户名文本框zhogn 的值,通过cu.asp其后的参数及赋值而得到了不同的结果(true or false)。

那么这里要说的即是cu.asp,他的主要功能就是接受URL参数name的值做内容显示,该内容最终被t1.htm异步获取。



!--cu.asp的源码示例--

!--#include file="conn.asp"--
%
name=request.querystring("name")
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from u_ser where u_name='"&name&"'"
rs.Open sql,conn,1,1
if rs.eof and rs.bof then
    response.write("true")
else
    response.write("false")
end if
rs.close
set rs=nothing
call CloseDatabase
%



如何将异步获取的信息显示在当前页呢


function updatePage() {
  if (xmlHttp.readyState  4) {
    test1.innerHTML="loading...";
  }
  if (xmlHttp.readyState == 4) {
    var response = xmlHttp.responseText;
    test1.innerHTML=response;
  }
}


其中xmlHttp.readyState中的readyState表示服务器在处理请求时的进展状况,其值分别有0-4,各有其说明情况,具体请参看:

http://www.cnbruce.com/blog/showlog.asp?cat_id=34&log_id=718

使用DHTML中的innerHTML可显示信息在定义的 span id="test1"是否能注册/span 上。

其余表单页面就不详叙了

打包文件下载(下载后将后缀 .cnbruce 修改为 .rar):

http://www.cnbruce.com/test/ajax/ajax.cnbruce

来源:https://www.tulaoshi.com/n/20160219/1602624.html

延伸阅读
标签: Web开发
我所举的这个例子是一个企业用户注册时的一个应用,当用户注册时检查用户名和企业名是否可用,以前的做法是在旁边加一个按钮,点击“检查”,就向服务器发出请求,然后等待……服务器返回信息,继续操作。如果我们用Ajax技术来实现以上的操作则不必等待服务器返回信息,用户输入用户名或企业名称的时候,当输入文本框失去焦点的时候,则会...
标签: Web开发
DIV class=box id=top_barWeb Tools--Ajax Version /DIVBR DIV class="box general"    天气预报: INPUT id=Weather size=17 value=北京   INPUT onclick=getWeather() type=button value="提 交" name=submit   SPAN id=Disp_Weather/SPAN/DIV DIV class="box general"  IP地址查询: INPUT id=Ip...
标签: Web开发
目前,在提供商业应用方面,IT行业对Web系统的依赖程度越来越高。Web浏览器虽然一直是向远程用户提供软件的一种理想的廉价方式,但它们并不能像桌面应用那样提供丰富的客户端功能。而通过AJAX(异步JavaScript及XML)则可以实现丰富的客户端交互能力和实时数据微量更新(micro-update),并且不需要使用任何一种私有的专用插件。 AJAX是一种使...
标签: Web开发
script type="text/javascript" language="javascript"     var http_request = false;     function makeRequest(url) {         http_request = false;         if (window.XMLHttpRequest) { // Mozilla, Safari,...   ...
标签: Web开发
首先我建议把所有技术都丢下,ajax到底做了什么,每当get或者post一个页面我们成为一次请求,也就是有一个页面进入另一页面,那么此页面的所有信息自然会参照上一次请求.这样我们发现有问题产生了,一,我们请求的数据量太大,一直web下无法实现.二,有些请求的局域我们在一些范围内未知.好了,我想ajax就是做这件事的.他能把请求不通过...

经验教程

317

收藏

62
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部