javascript - 更改 php 错误中的innerHTML

标签 javascript php html

我是 PHP 初学者。 我的代码

    <?php
    session_start();
    $username = "ADMIN";
    $host = "localhost";
    $password = "chmuhammadsohaib123";
    $database = "USER";
    $con = mysqli_connect($host, $username, $password, $database);
    $USERNAME = $_POST["lusername"];
    $PASSWORD = $_POST["lpassword"];
    if (isset($_POST["login"])) {
        if (isset($_POST["loggedin"])) {
                setcookie("RAUSERNAME", $USERNAME);
                setcookie("RAPASSWORD", $PASSWORD);
            }
        $_SESSION["SRAUSERNAME"] = $USERNAME;
        $_SESSION["SRAPASSWORD"] = $PASSWORD;
    }
    if (isset($_POST["login"])) {
        $data = mysqli_query($con, "SELECT * FROM `INFO` WHERE `USERNAME` = '$USERNAME'");
        if (mysqli_num_rows($data)>0) {
            echo "<script type='text/javascript'>window.location.replace('../');</script>";
        }
        else {
            print("<script type='text/javascript'>document.getElementsByClassName('errors').innerHTML = '<h1 class='redback'>SORRY, BUT THIS ACCOUNT DOESN'T EXISTS</h1>';</script>");
        }
    }
?>

我的 HTML 页面

<body>
    <div class="errors"></div>
        <fieldset class="replacement">
            <legend>LOGIN</legend>
            <h1>LOGIN WITH YOUR INFORMATION</h1><br><br>
            <form method="POST" action="<?php $_SERVER["php_self"]; ?>">
            <input type="text" name="lusername" placeholder="YOUR USERNAME">
<input type="password" name="lpassword" placeholder="YOUR PASSWORD" class="password">
<br>
<br>
<label>KEEP ME LOGGED IN: </label>
<input type="checkbox" name="loggedin" checked>
<br><br>
<input type="submit" name="login" value="LOGIN"></form>
        </fieldset>
    </div>
</body>
</html>

当我如上所述更改错误的innerHTML时,它不会改变。它说控制台中缺少;,或者有时错误null。我该如何修复它?

最佳答案

当您回显 JavaScript 代码时,dom 中不存在 id 为 errors 的 html 元素。因此 getElementById 的返回值将始终是未定义的。

<script>document.getElementById("errors")...</script>
... some more html
<div id="errors"></div>

您可以通过在 dom 文档准备就绪后调用 javascript 代码来解决此问题。使用 jQuery,你可以这样做

// event handler for document ready
$(function() {
    // at this point, the dom is ready and the 'errors' id exists
    $('#errors').html("some error message");
});

这可行,但似乎有点不必要。更好的方法是仅使用 php 回显实际的错误消息,而不使用 javascript 来执行此操作。

$error = false;
if (mysqli_num_rows($data)>0) {
    header('location: ../');
} else {
    $error = '<h1 class="redback">SORRY, BUT THIS ACCOUNT DOESN\'T EXISTS</h1>';
}

及以后

<div class="errors">
<?php if ($error) echo $error; ?>
</div>

关于javascript - 更改 php 错误中的innerHTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44217262/

相关文章:

javascript - 从 jscript 执行 php url

php - FPDF 创建运输标签

php - 在退出 apache/xampp 之前运行命令

java - 如何使用 java 模拟损坏的应用程序/八位字节流

jquery append 不适用于 svg 元素?

javascript - ES6 节点异步/等待意外标识符

javascript - 带有展开图标的 Accordion

javascript - FancyBox 3 缩放按钮

javascript - 取消选中复选框后如何在文本框不消失的情况下清除文本框(JavaScript)

javascript - NodeJs/expressjs : Run lengthy code in a callback