用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
  • asp之家 网络编程 m.aspxhome.com