簡體   English   中英

Ajax登錄響應錯誤

[英]Ajax Login Response Error

我正在用ajax和php登錄,在這種情況下,我實際上在記錄成功。 但是我正在嘗試發出警報並在登錄時刷新頁面。當我嘗試登錄時,它給了我錯誤並且沒有刷新。 但是,如果我刷新頁面,就會看到我在php中進行會話。 我不明白為什么。

這是我的代碼;

<script>

$(document).ready(function(){  
    $('#login_btn').click(function(){  
       var email = $('#email').val();  
       var password = $('#password').val();  


      if(email == '' || password == ''){
        $("#login_error").html("*** Please enter your email / password");
      }else{              
          $('#login_error').html("<strong class='text-success'>Validating...</strong>");

                $.ajax({
                url: "login.php",
                method: "post",
                data:{email:email, password:password},
                success: function(data){
                if (data === 'yes') {
                    window.location.reload();
                }else{
                    $('#login_error').html("<strong class='text-danger'>ERROR...</strong>");
                }
            }
                });

      }
    });
 }); 
</script>

登錄php:

<?php  
session_start();
include ('../config/setup.php'); #database connection


if(isset($_POST['email'])){
$q = "SELECT * FROM users WHERE email = '$_POST[email]' AND password = '$_POST[password]'";
$r = mysqli_query($dbc, $q);

if(mysqli_num_rows($r) > 0){
    $_SESSION['email'] = $_POST['email'];
    echo "yes";
}else{
    echo "no";
}
}
?>  

HTML :(在模式內使用登錄表單)

<div class="modal-body">

<div class="form-horizontal">
  <div class="form-group">
    <label for="email" class="col-sm-4 control-label">Email</label>
    <div class="col-sm-8">
      <input type="email" class="form-control" name="email" id="email" placeholder="Account Email">
    </div>
  </div>
  <div class="form-group">
    <label for="password" class="col-sm-4 control-label">Password</label>
    <div class="col-sm-8">
      <input type="password" class="form-control" name="password" id="password" placeholder="Account Password" >
    </div>
  </div>

  <div class="form-group">   
    <div class="col-sm-1"></div>
     <div align="center" class="col-sm-10">
      <button name="login_btn" id="login_btn" class="btn btn-success btn-block text-center"><span id="loader_before" class="glyphicon glyphicon-log-in" aria-hidden="true"></span><i id="loader" class="fa fa-spinner fa-spin fa-x fa-fw"></i> Log in to Account</button>
      </div>
      <div class="col-sm-1"></div>    
  </div>
</div>

<div align="center" class="container-fluid">   
<h6><a href="#"><strong class="text-danger">Forgot your password? Click here..</strong></a></h6>
</div>  
<h5><div id="login_error" class="text-warning"></div></h5>
</div>  

您只需要更新if塊即可,如下所示:

if (data === 'yes') {
    alert("You message here!");
    window.location.reload();
}else{
    $('#login_error').html("<strong class='text-danger'>ERROR...</strong>");
}

`

當您在php上調用echo時,它將寫入該值,但不會返回它。 那就是問題所在。 您不是從login.php返回“是”或“否”,而是在執行echo,這只會寫入值,而不會將其返回給調用者。 ajax調用正在等待響應,以使用“成功”回調對其進行處理。 由於login.php不返​​回任何內容,因此它將始終屬於else子句。 解決方案是在login.php上更改此設置

if(mysqli_num_rows($r) > 0){
$_SESSION['email'] = $_POST['email'];
    return "yes";
}else{
    return "no";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM