html值不为';在php表单中,jQuery不会显示为可见

html值不为';在php表单中,jQuery不会显示为可见,php,html,jquery,Php,Html,Jquery,刚开始使用php,但在jQuery方面有点困难。查看了文档,我认为一切都应该正常工作,但是没有。在表单中输入错误的数据后,隐藏的值不会显示出来。在css中,我分配给#警告显示:无 index.php <?php require "../src/models/Database.php"; ?> <?php include_once "../src/controllers/DatabaseController.php"; ?> <

刚开始使用php,但在jQuery方面有点困难。查看了文档,我认为一切都应该正常工作,但是没有。在表单中输入错误的数据后,隐藏的值不会显示出来。在css中,我分配给#警告显示:无

index.php

<?php require "../src/models/Database.php"; ?>
<?php include_once "../src/controllers/DatabaseController.php"; ?>

<?php session_start(); ?>
<?php include "../src/includes/header.php"; ?>
<?php
if (isset($_POST["submit"])) {
    $username = $_POST["username"];
    $password = $_POST["password"];
    $dbController = new DatabaseController();
    $dbController->loginUser($username, $password);
}
?>
<div class="container main">
    <h1 class="text-center">Web</h1>
    <p class="text-center" id="warning">Incorrect username or password</p>
    <div class="row login-page">
        <form class="form" method="POST">
            <input class="form-control" type="text" name="username" placeholder="Username" required>
            <input class="form-control" type="password" name="password" placeholder="Password" required>
            <input class="btn btn-success" type="submit" name="submit" value="Login">
        </form>
    </div>
</div>


<?php include "../src/includes/footer.php"; ?>

在html完成之前,您将包含jQuery脚本

因此,页面上还没有警告。没有显示任何内容

您可以在

之后包含脚本,也可以告诉jQuery在应用
show()之前等待文档准备就绪:


如果您在脚本中添加
console.log($(“#warning”).length)
您得到了什么值?为什么要使用JS来实现这一点?通过正常提交表单或AJAX,您如何调用您的操作?您是否检查了控制台,是否有任何错误?@HenryB当您得到0时,表示代码运行时id为
warning
的元素不存在。请尝试
$(document).ready(function(){$(“#warning”).show()})
作为旁注,您的代码容易受到SQL注入的攻击,尽管进行了转义-这是错误的。您应该切换到以完全阻止它。无论如何,回到主题:如果您登录时页面正在重新加载,那么您的函数应该只返回一个布尔值,指示登录是否成功。然后,您只需将错误消息包装在一个条件中,该条件检查该值,并且仅在段落失败时呈现该段落。使用jQuery来实现这一点是一种迂回的方法。
<!DOCTYPE html>
<html lang="en">

<head>
    <!-- Bootstrap starts -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <!-- Bootstrap ends -->
    <!-- Css starts -->
    <link rel="stylesheet" href="../src/styles/css/main.css">
    <!-- Css ends -->
    <!-- Jquery starts -->
    <script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>
    <!-- Jquery ends -->
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title id="title"></title>
</head>

<body>
<?php

class DatabaseController extends Database
{

    public function loginUser($username, $password)
    {
        $connection = $this->connection;
        $escapedUsername = mysqli_real_escape_string($connection, $username);
        $escapedPassword = mysqli_real_escape_string($connection, $password);

        $query = "SELECT * FROM users WHERE username = '$escapedUsername'";

        $result = $this->findUser($query, $escapedPassword);
        if ($result) {
            // $_SESSION["authenticated"] = true;
            echo "Logged in";
        } else { ?>
            <script>
                $("#warning").show();
            </script>
<?php
        }
    }
}
{
    "require": {
        "components/jquery": "^3.5"
    }
}
$( document ).ready(function() {
    $("#warning").show();
});