注册 登录
编程论坛 ASP.NET技术论坛

无刷新检测用户名

雪雨星风 发布于 2008-06-26 17:51, 1186 次点击
功能为:当用户输入用户名,用户名的文本框失去焦点后就检测用户名是否重复,不用再点击一个按钮才能检测前台代码:
以下是引用片段:
这个是我在网上找的   我不知道怎吗用   哪位高手给注释一下    详细的
谢谢了



<script type="text/JavaScript" language="javascript">
        var XMLHttp = null;
        function CheckUser()
        {
            try
            {
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(err1)
            {
                try
                {
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(err2)
                {
                    xmlHttp = new XMLHttpRequest();
                }
            }
            var Text1 = document.getElementById("Text1");
            var url = "chkuser.aspx?User=" + Text1.value;
            xmlHttp.open("GET",url,true);
            xmlHttp.onreadystatechange = OnHandler;
            xmlHttp.send(null);
        }
        function OnHandler()
        {
            if(xmlHttp.readyState == 4)
            {
                var isValid = xmlHttp.responseText;
                var exists = document.getElementById("exsits");
                exists.innerHTML = isValid.substring(0,4);
            }
        }
</script>
<input id="Text1" type="text"  /><label d="exsits"></label><br />
  然后建一个chkuser.aspx,其后台代码改为:
以下是引用片段:
protected void Page_Load(object sender, EventArgs e)
    {
        string user = this.Request.QueryString["User"];
        if (UserExist(user))
        {
            Response.Write("存在");
        }
        else
        {
            Response.Write("不存在");
        }
    }
    private bool UserExist(string username)
    {
        ClassLib.Employee emp = new ClassLib.Employee();
        return emp.EmpNameExist(username);
    }
9 回复
#2
hebingbing2008-06-26 18:30
这个是用到了ajax技术……
script type="text/JavaScript" language="javascript">
        var XMLHttp = null;
        function CheckUser()
        {
         //根据不通个浏览器建立xmlhttprequest对象  
          try
            {
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(err1)
            {
                try
                {
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(err2)
                {
                    xmlHttp = new XMLHttpRequest();
                }
            }
            var Text1 = document.getElementById("Text1");//找到Text1这个控件
            var url = "chkuser.aspx?User=" + Text1.value;//拼url路径
            xmlHttp.open("GET",url,true);//异步发送请求
           xmlHttp.onreadystatechange = OnHandler;//当请求状态发生变化时执行的函数注册
           xmlHttp.send(null);
        }
        function OnHandler()
        {
            if(xmlHttp.readyState == 4) //判断状态。4为请求完成
           {
               //接受返回参数,设置页面属性
               var isValid = xmlHttp.responseText;
                var exists = document.getElementById("exsits");
                exists.innerHTML = isValid.substring(0,4);
            }
        }
</script>
<input id="Text1" type="text"  /><label d="exsits"></label><br />
//下面的这个就不用解释了吧……
  然后建一个chkuser.aspx,其后台代码改为:
以下是引用片段:
protected void Page_Load(object sender, EventArgs e)
    {
        string user = this.Request.QueryString["User"];
        if (UserExist(user))
        {
            Response.Write("存在");
        }
        else
        {
            Response.Write("不存在");
        }
    }
    private bool UserExist(string username)
    {
        ClassLib.Employee emp = new ClassLib.Employee();
        return emp.EmpNameExist(username);
    }
#3
雪雨星风2008-06-27 09:08
谢谢
#4
zsk5032008-06-27 10:49
高手
#5
雪雨星风2008-06-27 11:31
MSN    drl_0602@    为了更好的交流互相加一下
#6
tomtory2008-06-27 13:47
可以用另外一种发放 比较简单  在C#模块给你留言
#7
beniao2008-06-28 00:26
回复 6# tomtory 的帖子
这段代码里有问题
Response.Write("存在");
你仔细检查下你responseText所得到的返回值,应该可以让你大吃两斤的。
建议加上两句,某些时候多写两句代码或许真能让你少吃两斤:
Response.Flush():
Response.End();
#8
雪雨星风2008-06-28 08:47
#9
beniao2008-06-29 15:50
回复 8# 雪雨星风 的帖子
不要汗  是事实  你试试就知道了。不加那两句把页面的html都全部给你返回了。
#10
zhishiouran2008-07-01 13:33
高手啊,看样子,学学ajax很有用啊,
1