网络编程
位置:首页>> 网络编程>> JavaScript>> 用XMLHTTPRequest对象进行客户端验证(2)

用XMLHTTPRequest对象进行客户端验证(2)

  发布时间:2008-03-03 12:38:00 

标签:xmlhttp,客户端,ajax

下面,我们看看如何写我们的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”,顾名思义,这个组件更比较适合于用在服务器端,而且适合用于有用户验证的情况。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com