Javascript Ajax/PHP登录没有反应

Javascript Ajax/PHP登录没有反应,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我收到了一个部分构建的网站,并被要求为客户和管理员实现一个登录系统。我对JS和AJAX非常陌生,我很难理解其他人实现了什么,以及如何让它正常工作 这是用户可以在凭证中输入的登录表单 <form name="ajaxform" id="ajaxform" action="auth/ajax-auth.php" method="POST" > <h4>Client Login</h4> <div id="error"></

我收到了一个部分构建的网站,并被要求为客户和管理员实现一个登录系统。我对JS和AJAX非常陌生,我很难理解其他人实现了什么,以及如何让它正常工作

这是用户可以在凭证中输入的登录表单

<form name="ajaxform" id="ajaxform" action="auth/ajax-auth.php" method="POST" >
    <h4>Client Login</h4>
        <div id="error"></div>
            <label for="username" class="col-sm-2 control-label">Username</label>
            <input id="username" class="form-control" name='username' placeholder="Username">
            <label for="password" class="col-sm-2 control-label">Password</label>
            <input type="password" class="form-control" id="password" name='password' placeholder="Password">
        </div>
        <div class="modal-footer">
            <button type="button">Close</button>
            <button type="submit" id="loginbtn">Login</button>
        </div>
</form>
这是我的PHP:

session_start();

error_reporting(E_ALL);                
ini_set('display_errors', 1);          

$username = $_POST['username'];
$password = $_POST['password'];

include '../connection.php';
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";

$result = mysqli_query($dbc, $sql);

    if (mysqli_num_rows($result) == true)
    {
        $_SESSION["username"] = $username;

        $row = mysqli_fetch_array($result);
        if ($row["permission"] == 2)
        {
         $_SESSION["permission"] = 2;
         //Redirect to the admin login page.
         header("Location: ../admin/admin.php");
        }
        else if ($row["permission"] == 1)
        {
        $_SESSION["permission"] = 1;
        $_SESSION["userId"] = $row["user_id"];
        $_SESSION["account"] = $row["account_id"];
        //redirect to the client home page.
        header("Location: ../index.html");   //Change this when ready, for now go to homepage
        }
    }
    else
    {
        echo "User not found!";
        header("Location: ../index.html");
    }
当我输入用户名和密码(错误或正确)时,什么都没有发生。如果凭据错误,则应显示错误消息,如果我以管理员身份登录,则应重定向到管理员页面,对于重定向到客户端页面的客户端,也是如此

我在这里出了什么问题

控制台没有向我抛出任何错误,甚至没有显示关于无效登录凭据的错误消息


我知道我很接近,非常感谢您的帮助

您必须在PHP中提供一些输出,因为现在您正在重定向请求。这不适用于AJAX请求

例如:

    if ($row["permission"] == 2)
    {
      $_SESSION["permission"] = 2;
      // Redirect to the admin login page.
      echo 'admin';
    }
    else if ($row["permission"] == 1)
    {
       $_SESSION["permission"] = 1;
       $_SESSION["userId"] = $row["user_id"];
       $_SESSION["account"] = $row["account_id"];
       echo 'client';
    }
试试这个代码

session_start();

error_reporting(E_ALL);                
ini_set('display_errors', 1);          

$username = $_POST['username'];
$password = $_POST['password'];

include '../connection.php';
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";

$result = mysqli_query($dbc, $sql);

    if (mysqli_num_rows($result) == true)
    {
        $_SESSION["username"] = $username;

        $row = mysqli_fetch_array($result);
        if ($row["permission"] == 2)
        {
         $_SESSION["permission"] = 2;
         //Redirect to the admin login page.
         echo "admin"; die;
        }
        else if ($row["permission"] == 1)
        {
        $_SESSION["permission"] = 1;
        $_SESSION["userId"] = $row["user_id"];
        $_SESSION["account"] = $row["account_id"];
        //redirect to the client home page.
         echo "client"; die;  //Change this when ready, for now go to homepage
        }
    }
    else
    {
          echo "notFound"; die;
    }
而脚本就像

 $("#ajaxform").submit(function(e)
                          {
e.preventDefault();
    var username=$("#username").val();
    var password=$("#password").val();
    var dataString = 'username='+username+'&password='+password;
    if($.trim(username).length>0 && $.trim(password).length>0) {
        $.ajax({
            type: "POST",
            url: "auth/ajax-auth.php",
            data: dataString,
            cache: false,
            beforeSend: function(){ $("#loginbtn").val('Connecting...');},
            success: function(data){
                if(data=="admin"||data=="client"||) {
                    alert(data + " Logged in!");

                   if(data == "admin"){
                       window.location.href = "/admin/admin.php";
                   }
                   else if(data == "client"){

                    //uncomment when client_home.php page is ready
                    //window.location.href = "client_home.php";

                    //for now just redirect to homepage
                    window.location.href = "client_home.html";
                   }

                } else {
                    $("#error").html("<span style='color:#cc0000'>Error:</span> Invalid username and password. ");
                    $("#loginbtn").val('Submit');
                }
            }
        });
}
$(“#ajaxform”).submit(函数(e)
{
e、 预防默认值();
var username=$(“#username”).val();
var password=$(“#password”).val();
var dataString='username='+username+'&password='+password;
如果($.trim(用户名).length>0&&$.trim(密码).length>0){
$.ajax({
类型:“POST”,
url:“auth/ajax auth.php”,
数据:dataString,
cache:false,
beforeSend:function(){$(“#loginbtn”).val('Connecting…');},
成功:功能(数据){
如果(数据==“管理”| |数据==“客户”| |){
警报(数据+“已登录!”);
如果(数据=“管理”){
window.location.href=“/admin/admin.php”;
}
else if(数据=“客户”){
//当client_home.php页面准备就绪时取消注释
//window.location.href=“client\u home.php”;
//现在只需重定向到主页
window.location.href=“client\u home.html”;
}
}否则{
$(“#error”).html(“错误:无效的用户名和密码。”);
$(“#loginbtn”).val(‘提交’);
}
}
});
}

而不是php中的这一行:

header("Location: ../index.html");
改用这个:

echo $username;

这将把用户名返回到Ajax请求,这样javascript就可以在成功登录时重定向用户。

首先,从表单中删除
操作或添加
e.preventDefault();
在你的jquery代码中。@Anantkumarsing首先为什么?解释一下为什么我应该这样做,而不是告诉我这样做。既然表单的动作被赋予了,那么它就会直接进入该页面。在你按照我说的去做之前,ajax不会起作用。我只是尝试了这个,我只是从PHP中的其他人那里找不到,我知道用户不会这样做数据库中存在。我尝试了“客户端”用户和“管理员”用户。@BigRabbit将数据类型:html添加到Ajax这是回显“管理员”和“客户端”正确地依赖于我以谁的身份登录,我的表单也在响应,这很好,但是我如何让它重定向它们而不是仅仅回显?Woops我调整了我的AJAX并忘记更改它,当我登录并重定向到正确的页面时。重定向是在jQuery代码中完成的。在PHP中不需要这样做。是的,在我的问题中,我忘记了将一些内容改回原来的状态,这很有效,谢谢!您能否准确地告诉我我做错了什么-仍然有点困惑。jQuery代码期待响应。但是PHP代码正在重定向到另一个页面,而不是回显值。因为您的逻辑正在jQuery中发生另一方面,AJAX无法处理onSuccess事件中的代码。只需在PHP中回显一个值,现在就可以了。
echo $username;