2016-12-28 119 views
1

我正在使用ajax验证我的登录页面。并以json的格式从数据库中提取数据。我尝试了很多时间&它适用于我,但它打印时提醒xmlhttp.readyState < 4使用ajax和json验证登录表单

<!DOCTYPE html> 
<html> 
<head> 
<title></title> 
<script type="text/javascript"> 
    function hey() 
    { 
    x="'"+document.login_tsms.user.value+"'"; 
    y="'"+document.login_tsms.pass.value+"'"; 

    var sql="select * from users where "+x+" IN (id,username)"; 

    var xmlhttp = new XMLHttpRequest(); 
    var count=0; 
    xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     var xx=xmlhttp.responseText; 
     var obj = JSON.parse(xx); 

     x=obj[0].id; 
     y=obj[0].username; 
     z=obj[0].password; 

     xx=document.login_tsms.user.value; 
     yy=document.login_tsms.pass.value; 

     if(x==xx || y==xx) 
     { 
      if(yy==z) 
      { 
       alert("ok man cool"); 
       //document.login_tsms.setAttribute("action","admin/admin.php"); 
      } 
      else 
      { 
       alert("Invalid username or password!"); 
      } 
     } 
     else 
     { 
      alert("Invalid username or password!"); 
     } 
    } 
    else 
    { 
      alert("Invalid username"); 
    } 
}; 
var url="db.php?q=read&sql="+sql; 
xmlhttp.open("REQUEST", url, true); 
xmlhttp.send(); 
} 
</script> 

 <div class="modal-body"> 
      <form name="login_tsms" action="login.php" method="post"> 
       <label style="font-size: 16px; font-weight: normal; margin-right: 35px;">User ID OR Name:</label> 

       <input required type="text" name="user" id="juser" style="border: 1px solid #ddd;border-radius: 4px;height: 40px;margin-bottom: 15px;padding-left: 12px;width: 406px;"/><br> 

       <label style="font-size: 16px; color: red; margin-left:165px;" id="uid_invalid"></label><br> 

       <label style="font-size: 16px; font-weight: normal; margin-right: 90px;">Password:</label> 

       <input autocomplete="off" type="password" name="pass" id="jpass" style="margin-left: 4px; border: 1px solid #ddd;border-radius: 4px;height: 40px;margin-bottom: 15px;padding-left: 12px;width: 406px;" required/><br> 

       <label style="font-size: 16px; color: red; margin-left: 165px;" id="upas_invalid"></label><br> 

       <input type="button" onclick="hey()" name="submit" value="Login" style="display: block;height: 40px;width: 136px; border: 1px solid #5973A8;font-size: 22px;margin-left: 165px;background-color:#5973A8;border-radius: 4px; color: #fff;letter-spacing: 1px;" /> 

       <br> 

       <h3 style="margin-left: 165px; margin-top: 0px;">Not a register user?<a id="gignup" href="signup.php">Sign up</a></h3> 

      </form> 
      <br>    
     </div> 

它为我工作的罚款。 但它的打印(警告)“无效的用户名”3次。 任何人都可以帮助我。

+0

'REQUEST'是不是HTTP动词 – Musa

回答

0

在执行ajax期间onreadystatechange将被调用5次。这意味着当Ajax请求发生变化时,它会通知状态更改功能。这些更改与客户端创建,建立连接,收到标头,收到内容,完成Ajax一样。因为你的条件(xmlhttp.readyState == 4 & & xmlhttp.status == 200)它进入真正的块只有一次,在它进入假模块,那么所有其他情况下输出“无效的用户名”