+ -
当前位置:首页 → 问答吧 → AJAX无刷新登录问题

AJAX无刷新登录问题

时间:2011-12-05

来源:互联网

先发代码。。。。
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没东西了,请问是怎么回事?

作者: qq474895698   发布时间: 2011-12-05

提示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 + "登录!")
密码错误什么也没返回当然就什么也不现实

作者: qq307023807   发布时间: 2011-12-06