用XMLHTTPRequest对象进行客户端验证(2)
时间:2008-03-03 12:38:00
下面,我们看看如何写我们的ASP页面:
<%
Dim objConn, objRS, sUserID
‘’ 取得传送来的“User ID”
sUserID = Replace(Trim(Request.QueryString("userid")),"‘’","")
‘’ 建立数据库的连接,并执行查询,看是否有该 “User ID”存在
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open CONNECTIONSTRING
sSQL = "SELECT userid FROM usertable WHERE userid = ‘’" + sUserID + "‘’"
Set objRS = objConn.Execute(sSQL)
‘’ 如果存在就输出 “exists”
If Not objRS.EOF Then Response.Write "exists"
‘’释放对象
objRS.Close
objConn.Close
Set objRS = Nothing
Set objConn = Nothing
%>
做为测试,如果的计算机或测试环境没有数据库,你也这样写进行简单的测试:
<%
sUserID = Replace(Trim(Request.QueryString("userid")),"‘’","")
If sUserID = "AAA" Then Response.Write "exists"
%>
如果服务器正常工作,上面的代码将很快被返回,但如果服务器当机了,我们是不是要无限等待下去?我们还必须进行错误处理和超时处理。XMLHTTP对象的open方法里,我们采用异步的方式,这样,当请求发送后,程序可以继续往下执行,我们通过检查状态来得到是否成功。XMLHTTP对象在不同的阶段有不同的状态值:
0:UNINITIALIZED,XMLHTTP对象已经创建,但还没有初始化(open方法还没有调用)
1:LOADING,XMLHTTP对象已经创建,但send方法还没有调用。
2:LOADED,send方法已经调用,,并且状态值和响应头信息都可以得到,但是还没有返回response信息。
3:INTERACTIVE,部分数据已经返回,可以通过responseBody和responseText得到部分数据。
4:COMPLETED,所有的数据都已经返回。
下面就是更新后的全部源代码:
<div id="divProgress" align="center">正在进行验证,请等待……</div>
<form name="form1" method="post" action="">
<table border="1" cellspacing="1" cellpadding="0" bordercolor="#0066FF" align="center" style="font-size:9pt">
<tr>
<td width="88"><b>姓名:</b></td>
<td width="200">
<input type="text" name="FirstName" style="border:1px solid red;width:100%">
</td>
</tr>
<tr>
<td><b>电子邮件:</b></td>
<td><input type="text" name="Email" style="border:1px solid red;width:100%"></td>
</tr>
<tr>
<td><b>用户ID:</b></td>
<td><input type="text" name="UserID" onblur="validateuserid(this.value)" style="border:1px solid red;width:100%"></td>
</tr>
<tr>
<td><b>密码:</b></td>
<td><input type="text" name="Pwd" style="border:1px solid red;width:100%"></td>
</tr>
</table>
<p align="center">
<input type="submit" name="Submit" value="我要注册" style="font-size:9pt">
<input type="reset" name="Submit2" value="重新填写" style="font-size:9pt">
</p>
</form>
<SCRIPT LANGUAGE="JavaScript">
var userid, oXMLHTTP;
function validateuserid(suserid)
{
oXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
userid = suserid;
// 这里是用孟宪会的机器进行测试,你可以改成别的网站进行测试。
var sURL = "http://mengxianhui/asp/validateuser.asp?userid=" + userid;
oXMLHTTP.onreadystatechange = managestatechange;
oXMLHTTP.open("GET", sURL, true);
try{
oXMLHTTP.send();
}
catch(e)
{
alert("此时无法进行验证。");
document.form1.FirstName.focus();
}
}
function managestatechange(){
switch(oXMLHTTP.readyState)
{
case 2, 3:
document.all("divProgress").style.display = "block";
break;
case 4:
if(oXMLHTTP.responseText == "exists")
alert("很抱歉! User ID : " + userid + "已经存在。");
document.all("divProgress").style.display = "none";
break;
}
}
document.all("divProgress").style.display = "none";
</script>
值得说明的是:还有另外一个组件叫“ServerXMLHTTP”,顾名思义,这个组件更比较适合于用在服务器端,而且适合用于有用户验证的情况。
标签:xmlhttp,客户端,ajax
0
投稿
猜你喜欢
python3+PyQt5实现柱状图
2023-06-02 22:19:36
浅谈Javascript中的事件流和事件绑定
2009-07-20 17:13:00
golang编程入门之http请求天气实例
2024-05-09 09:32:00
mysql 表维护与改造代码分享
2024-01-17 23:04:05
golang 通过ssh代理连接mysql的操作
2024-01-19 06:43:27
Laravel配置全局公共函数的方法步骤
2023-11-15 01:20:42
asp检测文件编码方法
2007-10-03 14:27:00
MySQL事务的隔离级别详情
2024-01-27 23:33:56
python 如何快速复制序列
2022-12-04 05:20:36
Linux系统彻底删除Mysql的详细教程
2024-01-22 00:36:22
Select count(*)、Count(1)和Count(列)的区别及执行方式
2024-01-28 14:43:04
ASP分页和日期格式化为RFC822格式的办法
2008-11-21 15:46:00
Python函数进阶与文件操作详情
2023-09-12 17:24:33
CentOS 6/7环境下通过yum安装php7的方法
2023-11-23 11:08:02
python处理csv数据的方法
2023-03-08 19:05:31
很全面的Mysql数据库、数据库表、数据基础操作笔记(含代码)
2024-01-15 11:19:42
教你怎样打造SQL Server2000的安全策略
2009-01-23 14:03:00
Python多线程threading和multiprocessing模块实例解析
2023-05-11 13:30:51
MySQL自定义序列数的实现方式
2024-01-14 00:09:50
JavaScript的事件机制详解
2024-05-03 15:58:45