Ajax请求返回“ 200 OK”

时间:2019-05-17 14:23:09

标签: javascript php ajax

我正在尝试为我的作业创建注册和登录系统。我做了与该部分相同的注册,但是我无法登录,它总是会引发错误事件(出了点问题!),状态为200,状态文本为OK.我尝试更改dataType为TEXT,echo json_encode("x")echo "x",并据此编辑了成功/错误方法,但没有任何变化。

Ajax请求:


    $.ajax({
        type : 'POST',
        url : 'functions/loginHandler.php',
        dataType : 'JSON',
        data : {
            email : email,
            password : password
        },

        success : function(data) {
            switch(data) {
                case "emailNotExists" :
                    notifier.alert("Email not found");
                    break;
                case "loginFailed" :
                    notifier.alert('Invalid login credentials');
                    break;
                case "loginSuccessful" :
                    notifier.success('Login Successful');
                    setTimeout(function () {
                        window.location.href = "index.php";
                    },2000);
                    break;
            }
        },

        error : function(data) {
            notifier.alert('Something went wrong!');
            console.log(data);
        }

    });

loginHandler.php


    if (isset($_POST['username']) && !empty($_POST['username']) && isset($_POST['password']) && !empty($_POST['password'])){
        $username = $_POST['username'];
        $password = $_POST['password'];

        $login = new Library();
        $login->login($username, $password);
    }

Login Method :

        public function login($username, $password) {
        try {
            $db = DB();
            $query = $db->prepare("SELECT userID FROM users WHERE username = :username");
            $query->bindParam("username", $username);
            $query->execute();
            if($query->rowCount() == 0) {
                echo json_encode("usernameNotExists");
            } else {
                $querySecond = $db->prepare("SELECT userID FROM users WHERE (username = :username AND password = :password)");
                $querySecond->bindParam("username", $username);
                $encPassword = hash("sha256", $password);
                $querySecond->bindParam("password", $encPassword);
                $querySecond->execute();
                if ($querySecond->rowCount() > 0) {
                    $result = $querySecond->fetch(PDO::FETCH_OBJ);
                    $_SESSION["userID"] = $result->userID;
                    echo json_encode("loginSuccessful");
                } else {
                    echo json_encode("loginFailed");
                }
            }

        } catch (PDOException $e) {
            exit($e->getMessage());
        }
    }

编辑:我意识到我在发送电子邮件时出错,但是检查用户名非常感谢您的帮助。我花了将近2个小时来解决这个错误。 :)

1 个答案:

答案 0 :(得分:-1)

200 表示您的AJAX请求已发送,并且服务器未发生任何错误。那就不是AJAX问题。

您的AJAX响应中没有任何内容,因为您的php进程未返回任何内容。

这应该可行...

if (isset($_POST['username']) && !empty($_POST['username']) && isset($_POST['password']) && !empty($_POST['password'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $login = new Library();
    echo $login->login($username, $password);
}

登录方法:

public function login($username, $password) {
    try {
        $db = DB();
        $query = $db->prepare("SELECT userID FROM users WHERE username = :username");
        $query->bindParam("username", $username);
        $query->execute();
        if($query->rowCount() == 0) {
            return json_encode("usernameNotExists");
        } else {
            $querySecond = $db->prepare("SELECT userID FROM users WHERE (username = :username AND password = :password)");
            $querySecond->bindParam("username", $username);
            $encPassword = hash("sha256", $password);
            $querySecond->bindParam("password", $encPassword);
            $querySecond->execute();
            if ($querySecond->rowCount() > 0) {
                $result = $querySecond->fetch(PDO::FETCH_OBJ);
                $_SESSION["userID"] = $result->userID;
                return json_encode("loginSuccessful");
            } else {
                return json_encode("loginFailed");
            }
        }

    } catch (PDOException $e) {
        exit($e->getMessage());
    }
}

请注意,$login->login($username, $password);是一种方法,应该返回不使用echo的内容。

然后,将所有echo替换为return,并使用echo $login->login($username, $password);来显示发送响应