编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> Ajax判断用户名是否重复
  · Ajax判断用户名是否重复

用户:  明日科技
发帖:  417 篇
作品:  1 个
回复:  2 篇
技术分:  805 分
等级:  
注册:  2009-09-07 06:37:23



发表于:2010-06-10 13:32:32
          楼主

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();

        }

        //创建服务器端CGIURL

        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" %>

本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页