日期:2014-05-16  浏览次数:20697 次

AJAX无刷新登录问题 - Web 开发 / Ajax
先发代码。。。。
JScript code

var xmlhttp;
        function creatHttp() {
            if (window.ActiveXObject) {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            else {
                xmlhttp = new XMLHttpRequest();
            }
        }

        function postData() {
            creatHttp();
            var uname = document.getElementById("Text1").value;
            var upass = document.getElementById("Text2").value;
            if (uname.length == 0 || upass.length == 0) {
                alert("请输入用户名密码!");
                return;
            }
            else {
                var userinfo = "";
                userinfo = uname + "," + upass;
                xmlhttp.open("post", "Index/DataPage.aspx?userinfo=" + escape(userinfo), true);
                xmlhttp.onreadystatechange = stateChange;
                xmlhttp.send(null);
            }
        }

        function stateChange() {
            if (xmlhttp.readystate == 4) {
                if (xmlhttp.status == 200) {
                    document.getElementById("login").innerHTML = unescape(xmlhttp.ResponseText);
                }
            }
            else {
                alert("用户名密码错误!");
            }
        }


然后是传入数据页面的代码
C# code

protected void Page_Load(object sender, EventArgs e)
    {
        Users users = new Users();
        string userinfo = Request.QueryString["userinfo"];
        string[] arr = userinfo.Split(',');
        string uname = arr[0].ToString();
        string upass = arr[1].ToString();
        users.Uname = uname;
        users.Upass = upass;
        DataSet ds = users.CheckUser(users);
        if (ds.Tables[0].Rows.Count > 0)
        {
            Response.Write("欢迎" + uname + "登录!");
        }
    }


现在的问题是,每次输入正确的用户名和密码的时候很正常,能够出现欢迎用户登录的字段,但是输入错误的用户名密码时,那个错误提示框回提示三遍,然后输入用户名和密码的框跟按钮就都不见了,也就是login那个DIV没东西了,请问是怎么回事?

------解决方案--------------------
提示3遍就对了 
 function stateChange() {
if (xmlhttp.readystate == 4) {
if (xmlhttp.status == 200) {
document.getElementById("login").innerHTML = unescape(xmlhttp.ResponseText);
}
}
else {
alert("用户名密码错误!");
}
}
改成

 function stateChange() {
if (xmlhttp.readystate == 4) {
if (xmlhttp.status == 200) {
if(xmlhttp.ResponseText=="这里写登陆成功返回的字符串"){
document.getElementById("login").innerHTML = unescape(xmlhttp.ResponseText);}else{
alert("用户名密码错误!");
}

}
}
因为readystate会改变3次 



 document.getElementById("login").innerHTML = unescape(xmlhttp.ResponseText);
这句是login DIV中显示返回的字符串登陆成功你返回"欢迎(" + uname + "登录!")
密码错误什么也没返回当然就什么也不现实