首页 > 解决方案 > 验证表单后的 JQuery Ajax submitHandler()

问题描述

我使用 JQuery 库,并在我的表单验证时尝试传递 ajax submitHandler

我正在检查帐户信息是否正确。但是我提出了一个问题,在我在 Ajax 中成功函数的情况下,如果数据不等于零,我希望加载表单。因此,如果我输入了错误的密码,我的情况会很好,它会检测到零。但是,如果我输入了正确的密码,我的表单会加载并将我重定向到我的主页,而不是用户个人资料页面。PHP 会话甚至没有在其他地方创建,就好像它被忽略了一样。

查询:

submitHandler: function (form) {
    $.ajax({
        type: "POST",
        url: "App/Actions/PlayerCheckAuthentication.php",
        data: $("form[name='auth']").serialize(),
        success: function (data) {
            if (data == 0) {
                console.log(data)
                $(".input-container").eq(5).append("<label class='box gray b_error'>Password incorrect.</label>");
                $(":input[name='password']").addClass("red");
            } else {
                form.submit();
            }
        }
    });
    return false;
},

PHP Ajax 调用:

<?php

require '../../vendor/autoload.php';

use App\Models\AuthManager as Auth;
use App\Config;

$Auth = new Auth();

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

if (isset($username) && isset($password)) {
    if ($Auth->auth($username, $password)) {
        echo "true";
        header("Location: " . Config::APP_URL . "/me");
    } else {
        echo "false";
    }
}

PHP 函数

    public function auth($username, $password)
    {
        $array = Model::getDB()->get("users", "*", ["username" => $username]);
        $count = Model::getDB()->count("users", ["username" => $username]);

        if ($count > 0) {
            if (password_verify($password, $array['password'])) {
                $_SESSION['user'] = array();

                foreach ($array as $user => $key) {
                    //unset($_SESSION['user']['password']);
                    $_SESSION['user'][$user] = $key;
                }
                return true;
            } else {
                return false;
            }
        }
    }

标签: javascriptjqueryajax

解决方案


推荐阅读