Ajax判断用户名是否重复当用户在文本框中输入用户名,程序将立即返回提示信息而不会刷新页面。如果该用户名已存在则提示“此用户名已存在,请重新输入”。如图1所示。 图1 判断用户名是否重复 (1)在ASP.NET网站中,添加Web窗体Register.aspx。在该页面中添加TextBox控件用于输入用户名,代码如下: Register.aspx文件 <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> …略 <asp:TextBox ID="TextBox1" runat="server" SkinID=tbSkin MaxLength="50" Width="220px" onblur="return checkUserName()"></asp:TextBox> …略 </ContentTemplate> </asp:UpdatePanel> </form> </body> 在TextBox控件属性中添加onblur事件,在该事件中引用JavaScript脚本函数checkUserName()。该函数中主要是通过创建XMLHttpRequest对象与服务器交互,从而获取数据。代码如下: Register.aspx文件 <script language="javascript" type="text/javascript"> var xmlHttp = false; function checkUserName() { //获取用户名 var tbUserName = document.getElementById('TextBox1'); if (tbUserName.value == "") return; //创建XMLHttpRequest对象 try { xmlHttp = new ActiveXObject("Msxm12.XMLHTTP"); } catch(e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e2) { xmlHttp = false; } } if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); } //创建服务器端CGI的URL var url = "CheckUserNameService.aspx?UserName=" + tbUserName.value; //连接服务器 xmlHttp.open("GET",url,true); xmlHttp.onreadystatechange = callBack_checkUserName; xmlHttp.send(null); } //获取服务器端的响应 function callBack_checkUserName() { if (xmlHttp.readyState == 4) { var isValid = xmlHttp.responseText; var checkResult = document.getElementById("lbCheckResult"); checkResult.innerHTML = ((isValid == "true") ? "" : "此用户名已存在,请重新输入"); } } </script> (2)新建Web窗体CheckUserNameService.aspx,在该页面对应的.cs文件中连接数据库,判断用户输入的用户名是否已经存在,并返回值。代码如下: CheckUserNameService.aspx.cs文件 protected void Page_Load(object sender, EventArgs e) { //获取用户名 string compareName = Request["UserName"]; bool isValid = false; //连接数据库 string connstr = "server=localhost;database=db_ajax;uid=sa;pwd="; SqlConnection conn = new SqlConnection(connstr); conn.Open(); //查询数据表 string sqlstr = "select UserName from UserInfo where UserName = @UserName"; SqlCommand cmd = new SqlCommand(sqlstr,conn); cmd.Parameters.Add("@UserName",SqlDbType.VarChar,50).Value = compareName.Trim(); //读取记录行 SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); if (sdr.HasRows) { isValid = false; } else { isValid = true; } //释放资源 sdr.Dispose(); cmd.Dispose(); conn.Close(); //输出结果 Response.Clear(); Response.Write(isValid ? "true" : "false"); Response.Flush(); } 这里要注意的是,在CheckUserNameService.aspx文件中不能有HTML标记。代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CheckUserNameService.aspx.cs" Inherits="CheckUserNameService" %> |