Ajax即时实现服务端数据验证(Asp.net 2.0)(示例代码下载)

本文介绍了一个使用Ajax进行实时用户名验证的示例项目。该示例包括前端JavaScript代码与.NET后端代码,实现用户输入时即时反馈用户名是否符合规定及是否存在。

学习 [征服Ajax——Web 2.0快速入门与项目实践(.net)]

(一). 运行效果如下:

(二). 代码

1. 页面 *.aspx 前台代码如下:

1<body>
2<formid="form1"runat="server">
3<scripttype="text/javascript">
4varcbo=newCallBackObject();
5cbo.OnComplete=Cbo_Complete;
6cbo.OnError=Cbo_Error;
7functionCheckUserName(UserName)
8{
9varmsg=document.getElementById('lblMessage');
10if(UserName.length>0)
11{
12cbo.DoCallBack('tbUsername','');
13}

14else
15{
16cbo.AbortCallBack();
17msg.innerHTML='';
18}

19}

20functionCbo_Complete(responseText,responseXML)
21{
22varmsg=document.getElementById('lblMessage');
23if(responseText=='0')
24{
25msg.innerHTML='合法用户!';
26msg.style.color='green';
27}

28elseif(responseText=='1')
29{
30msg.innerHTML='用户名长度必须在3到15之间,且不包含字母/数字/下划线以外的字符!';
31msg.style.color='red';
32}

33else
34{
35msg.innerHTML='用户名不存在!';
36msg.style.color='red';
37}

38}

39functionCbo_Error(status,statusText,responseText)
40{
41//alert('status='+status+'responseText='+responseText+'statusText='+statusText);
42}

43</script>
44<div>
45<asp:PanelID="Panel1"runat="server"BackColor="#C0C0FF"Font-Bold="True"Font-Overline="False"
46Font-Size="XX-Large"Height="37px"Width="459px">
47AJAX数据验证</asp:Panel>
48<br/>
49<hralign="left"style="width:463px"/>
50<br/>
51输入用户名:&nbsp;
52<asp:TextBoxID="tbUsername"runat="server"OnTextChanged="tbUsername_TextChanged"></asp:TextBox><br/>
53<br/>
54<asp:LabelID="lblMessage"runat="server"Width="246px"></asp:Label></div>
55</form>
56</body>

2. 页面 *.aspx.cs后台代码如下:

11publicpartialclass_Default:System.Web.UI.Page
22{
33protectedvoidPage_Load(objectsender,EventArgse)
44{
55tbUsername.Attributes.Add("OnKeyUp","CheckUserName(this.value)");
66}
77protectedvoidtbUsername_TextChanged(objectsender,EventArgse)
88{
99if(!CallBackHelper.IsCallBack)
1010return;
1111
1212stringstrName=tbUsername.Text;
1313
1414try
1515{
1616stringstrReturnCode;
1717if(!IsValidUsername(strName))
1818{
1919strReturnCode="1";
2020}
2121elseif(!IsUsernameExist(strName))
2222{
2323strReturnCode="2";
2424}
2525else
2626{
2727strReturnCode="0";
2828}
2929CallBackHelper.Write(strReturnCode);
3030}
3131catch(Exceptionex)
3232{
3333CallBackHelper.HandleError(ex);
3434}
3535}
3636privateboolIsUsernameExist(stringstrUsername)
3737{
3838boolbRet=false;
3939
4040switch(strUsername.ToUpper())
4141{
4242case"KING":
4343case"ROSE":
4444bRet=true;
4545break;
4646}
4747
4848returnbRet;
4949}
5050
5151privateboolIsValidUsername(stringstrUsername)
5252{
5353return(Regex.IsMatch(strUsername,@"^(\w{3,15})$"));
5454}
5555}

3. Ajax主要的JS文件代码如下:

11//JScriptFile
22functionCallBackObject()
33{
44this.XmlHttp=this.GetHttpObject();
55}
66CallBackObject.prototype.GetHttpObject=function()
77{
88varxmlhttp;
99/*@cc_on
1010@if(@_jscript_version>=5)
1111try{
1212xmlhttp=newActiveXObject("Msxml2.XMLHTTP");
1313}catch(e){
1414try{
1515xmlhttp=newActiveXObject("Microsoft.XMLHTTP");
1616}catch(E){
1717xmlhttp=false;
1818}
1919}
2020@else
2121xmlhttp=false;
2222@end@*/
2323if(!xmlhttp&&typeofXMLHttpRequest!='undefined')
2424{
2525try
2626{
2727xmlhttp=newXMLHttpRequest();
2828}
2929catch(e)
3030{
3131xmlhttp=false;
3232}
3333}
3434returnxmlhttp;
3535}
3636CallBackObject.prototype.DoCallBack=function(eventTarget,eventArgument)
3737{
3838vartheData='';
3939vartheform=document.forms[0];
4040varthePage=window.location.pathname+window.location.search;
4141vareName='';
4242theData='__EVENTTARGET='+escape(eventTarget.split("$").join(":"))+'&';
4343theData+='__EVENTTARGUMENT='+eventArgument+'&';
4444
4545theData+='__VIEWSTATE='+escape(theform.__VIEWSTATE.value).replace(newRegExp('\\+','g'),'%2b')+'&';
4646theData+='IsCallBack=true&';
4747for(vari=0;i<theform.elements.length;i++)
4848{
4949eName=theform.elements[i].name;
5050if(eName&&eName!='')
5151{
5252if(eName=='__EVENTARGET'||eName=='__EVENTARGUMENT'||eName=='__VIEWSTATE')
5353{
5454}
5555else
5656{
5757theData=theData+escape(eName.split("$").join(":"))+'='+theform.elements[i].value;
5858if(i!=theform.elements.length-1)
5959{
6060theData=theData+'&';
6161}
6262}
6363}
6464}
6565if(this.XmlHttp)
6666{
6767if(this.XmlHttp.readyState==4||this.XmlHttp.readyState==0)
6868{
6969varoThis=this;
7070this.XmlHttp.open('POST',thePage,true);
7171this.XmlHttp.onreadystatechange=function()
7272{
7373oThis.ReadyStateChange();
7474};
7575this.XmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
7676this.XmlHttp.send(theData);
7777}
7878}
7979}
8080
8181CallBackObject.prototype.AbortCallBack=function()
8282{
8383if(this.XmlHttp)
8484{
8585this.XmlHttp.abort();
8686}
8787}
8888
8989CallBackObject.prototype.OnLoading=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值