前段时间一直在进行ajax方面的学习,最近用在了项目中,也算小爽一把。 在自己做的项目中,其中的一个小模块是用户注册,在注册是需要多次遍历数据库来判断是否有重复的记录,数据访问量非常大,所以想把这些验证工作放在客户端来实现。
首先,添加ajax引用,将ajax.dll添加近来,然后在web.config中配置下,
<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>
</httpHandlers>
加上这个节点,下面是写ajax方法,为客户端调用做准备。为了方便管理单独放在一个类里面了。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Ucar.AppraiserClub.BLL;
using Ucar.AppraiserClub.Model;
using Ucar.Common;
public class AjaxServer
...{
public AjaxServer()
...{
}
[Ajax.AjaxMethod()]
public bool UserExists(string userName)
...{
return UcarEstimater.Exists("loginName", userName);
}
[Ajax.AjaxMethod()]
public bool CheckEmail(string email)
...{
return UcarEstimater.Exists("email", email);
}
[Ajax.AjaxMethod()]
public bool CheckUserID(string idcard)
...{
return UcarEstimater.Exists("idCard", idcard);
}
}
---PageLoad事件#region---PageLoad事件
protected void Page_Load(object sender, EventArgs e)
...{
//Ajax.NET注册服务器端映射类
Ajax.Utility.RegisterTypeForAjax(typeof(AjaxServer));
ImageButton1.Attributes.Add("onclick", "javascript:return checkvalid();");
}
#endregion
// JScript 文件
var state = false;
function checkUserName()...{

if(document.getElementById("ctl00$ContentPlaceHolder1$txtUserName").value=="") ...{
document.getElementById("ctl00_ContentPlaceHolder1_Label1").innerText="用户名不能为空!";
document.getElementById("ctl00$ContentPlaceHolder1$txtUserName").focus();
return;
}
AjaxServer.UserExists(document.getElementById("ctl00$ContentPlaceHolder1$txtUserName").value,checkUserNameResult);
} 
function checkUserNameResult(response)...{

if (response.error != null)...{
alert(response.error); return;
} 
if(response.value==true)...{
document.getElementById("ctl00_ContentPlaceHolder1_Label1").innerText="对不起,该用户名已经存在!";
state = true;
}
else
...{
document.getElementById("ctl00_ContentPlaceHolder1_Label1").innerText="";
state=false;
}
}
function checkEmail()...{

if(document.getElementById("ctl00$ContentPlaceHolder1$txtemail").value == "") ...{
document.getElementById("ctl00_ContentPlaceHolder1_Label2").innerText="email不能为空!";
return;
}
AjaxServer.CheckEmail(document.getElementById("ctl00$ContentPlaceHolder1$txtemail").value,checkUserNameResult2);
} 
function checkUserNameResult2(response)...{

if (response.error != null)...{
alert(response.error); return;
} 
if(response.value==true)...{
document.getElementById("ctl00_ContentPlaceHolder1_Label2").innerText="对不起,email已经存在!";
state = true;
}
else
...{
document.getElementById("ctl00_ContentPlaceHolder1_Label2").innerText="OK";
state=false;
}
}
function checkIdCard()...{

if(document.getElementById("ctl00$ContentPlaceHolder1$txtIdCard").value=="") ...{
document.getElementById("ctl00_ContentPlaceHolder1_Label3").innerText="身份证不能为空!";
return;
}
AjaxServer.CheckUserID(document.getElementById("ctl00$ContentPlaceHolder1$txtIdCard").value,checkUserNameResult1);
} 
function checkUserNameResult1(response)...{

if (response.error != null)...{
alert(response.error); return;
} 
if(response.value==true)...{
document.getElementById("ctl00_ContentPlaceHolder1_Label3").innerText="对不起,身份证已经存在!";
state = true;
}
else
...{
document.getElementById("ctl00_ContentPlaceHolder1_Label3").innerText="OK";
state=false;
}
}
function checkvalid()
...{
if(state)
...{
alert('您填写的某些选项被别人占用!');
return false;
}
return true;
}
<input id="txtUserName" runat="server" maxlength="20" onblur="javascript:checkUserName()"
style="width: 143px" type="text" />在此不在叙述了。。。
初次使用ajax技术感觉是很爽,由于javascript基础较薄弱,所以写的js方法也十分麻烦,随着ajax架构技术的逐渐成熟,需要程序员做的事情越来越少了,简单控件的拖拽就可以实现异步调用。
本文介绍如何使用Ajax技术在用户注册过程中实现客户端验证,包括用户名、邮箱及身份证号的实时检查,减少服务器负担。
489

被折叠的 条评论
为什么被折叠?



