2016-12-28 7 views
1

ajaxを使用してログインページを検証しています。そして、データベースからデータを取り出してjson形式にします。私は多くの時間を試しました&それは私のために働いていますが、xmlhttp.readyState < 4のときに警告を出しています。 ajaxとjsonを使用してログインフォームを確認してください

それは罰金私の作品

 <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> 

<!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> 
。 でも、その印刷(アラート)「無効なユーザー名」は3回あります。誰でも助けてくれますか?

+0

'REQUEST'がありますHTTP動詞ではありません – Musa

答えて

0

onreadystatechangeは、ajaxの実行中に5回呼び出されます。 Ajaxリクエストに変更があったときにステータス変更機能に通知します。クライアントの作成、接続の確立、ヘッダーの受信、コンテンツの受信、Ajaxの完了などの変更が行われます。そのため、あなたの条件の(xmlhttp.readyStateの== 4 & & xmlhttp.statusの== 200)、それはその後、「無効なユーザー名」を出力し、他のすべてのケースでは、偽ブロックになり、一度だけの真のブロックに入る

関連する問題