雪雨星风 发表于 2008-6-26 18:03

无刷新检测用户名

无刷新检测用户名无刷新检测用户名功能为:当用户输入用户名,用户名的文本框失去焦点后就检测用户名是否重复,不用再点击一个按钮才能检测前台代码:
以下是引用片段:
这个是我在网上找的   我不知道怎吗用   哪位高手给注释一下    详细的
谢谢了[em14] [em14] [em14] [em14] [em14] [em14]



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

frankqnj 发表于 2008-6-27 01:52

XMLHttpRequest  对象 是ajax核心对象

你需要去看ajax 方面的教程

就这段代码而言 就是创建 XMLHttpRequest 对象实例.  

通过其 responseText 属性 获取  chkuser.aspx 的 response 的内容
XMLHttpRequest.open() 方法 异步 向 chkuser.aspx 提交请求
其中的参数  GET,url,true   get 即method=get  url 为被请求页面地址 即chkuser.aspx   true  即 异步请求  如果是flase 则为同步请求 ... 如果设置false   ajax 就没啥意义了...

另外:xmlHttp.readyState == 4     就是 chkuser.aspx 处理 请求的状态 4 为就绪 也就是 处理完成 并返回了数据....

但是就这段代码而言 至少 少了 2样关键的东西  

一是 没有写 当readyState <4  也就是 chkuser.aspx 处于 没完成 处理 的 其他状态 时   该做什么(一般是 spanid.innerHTML='loading'或='<img src="载入进度条的gif动画">' ...这都是常规做法啦)

二是 错误处理  如 xmlHttp.status==404 或500    如没找到XMLHttpRequest.open() 方法所请求的页面 或服务器出了问题 时 该做什么

雪雨星风 发表于 2008-6-27 09:22

[em02] 我现在需要尽快把这效果做出来

可以给我写一下具体的吗

渚薰 发表于 2008-6-27 09:58

在这里等结果,还不如就去认真的花一天时间看看ajax
《Ajax基础教程》
电子书下载:
http://www.51leifeng.net/viewthread.php?tid=2268&highlight=ajax

tomtory 发表于 2008-6-27 13:45

要块点完成吗??
可以
前台调用后台的方法  等下我在C#模块给你解决 一会自己在里面去看下的嘛

页: [1]

编程论坛