Javascript 如何输出一个';确认';用户单击提交后我的注册页面上的消息?

Javascript 如何输出一个';确认';用户单击提交后我的注册页面上的消息?,javascript,node.js,express,Javascript,Node.js,Express,我有一个nodejs服务器,并用html创建了一个注册页面。单击submit按钮时,我创建的服务器接收输入并检查值 如果用户已添加到数据库,我希望注册页面返回一条新消息,说明“用户已添加” 现在我使用“res.sendFile()”并再次发送页面,但我希望这样做并添加一个新的消息元素 以下是服务器中javascript代码的一部分: console.log(req.body); const { email, username, password, passwordConfirm

我有一个nodejs服务器,并用html创建了一个注册页面。单击submit按钮时,我创建的服务器接收输入并检查值

如果用户已添加到数据库,我希望注册页面返回一条新消息,说明“用户已添加”

现在我使用“res.sendFile()”并再次发送页面,但我希望这样做并添加一个新的消息元素

以下是服务器中javascript代码的一部分:

    console.log(req.body);

    const { email, username, password, passwordConfirm } = req.body;

    db.query("SELECT email FROM playerinfo where email = ?", [email], (error, results) => {
        if (error) console.log(error);

        if (results.length > 0) {
            return res.sendFile(path.join(__dirname, '../client/register.html'), );
        }


        db.query("INSERT INTO playerinfo VALUES ?", 
{ username: username, password: password, email: email }, (error, results) => {
            if (error) console.log(error);
            else {
                console.log(results);

                return res.sendFile(path.join(__dirname, '../client/register.html'));
            }
        });
    });
}
以下是注册页面的HTML:

<!DOCTYPE html>

<head>
    <title>Create an account</title>
    <link rel="stylesheet" href="style/menustyle.css">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous">
</head>

<body>

    <nav>
        <h3>User Login Test</h3>
        <ul>
            <li><a href="/">Home</a></li>
            <li><a href="/login">Log in</a></li>
            <li><a href="/register">Register</a></li>
        </ul>
    </nav>

    <div id='register-box' class="card" style="width: 18rem;">
        <h3 class="card-title">Register</h3>
        <div class="card-body">
            <form action="/auth/register" method="POST">
                <div class="mb-3">
                    <label for="player-email" class="form-label">Email address</label>
                    <input type="email" class="form-control" id="player-email" aria-describedby="emailHelp"
                        name='email'>
                </div>
                <div class="mb-3">
                    <label for="player-username" class="form-label">Username</label>
                    <input type="text" class="form-control" id="player-username" name='username'>
                </div>
                <div class="mb-3">
                    <label for="player-password" class="form-label">Password</label>
                    <input type="password" class="form-control" id="player-password" name='password'>
                </div>
                <div class="mb-3">
                    <label for="player-password-confirm" class="form-label">Confirm Password</label>
                    <input type="password" class="form-control" id="player-password-confirm" name='passwordConfirm'>
                </div>
                

                <button type="submit" class="btn btn-primary">Submit</button>
            </form>
        </div>
    </div>
</body>

</html>

创建帐户
用户登录测试
登记 电子邮件地址 用户名 密码 确认密码 提交
你为什么要这样做? 是要求还是你的决定? 我想你有几种方法可以做到这一点

  • 您可以从客户端使用ajax并从服务器获得json响应。这样,您将在注册网站中获得更好的体验,避免重新加载所有页面并再次发送回页面
  • 如果您需要重新加载所有页面并从服务器再次发送回,您可以使用一些模板管理器(如Mustach)并在发送之前解析html内容,或者只需使用两个不同的html即可。无论如何,我认为这不是一个好主意

  • 小贴士:1。清理SQL查询,因为您的实现要接受注入。2.在响应错误时,找到比console.log更好的方法。3.不要在生产环境中使用console.log,因为它会在您没有注意到的情况下耗尽您的内存,直到驱动器100%满为止。使用模板引擎,然后使用
    res.sendFile
    ,而不是
    res.render
    。或者就我个人而言,我使用js客户端验证,然后使用ajax发布,并使用json进行服务器端验证和响应,这样更好ux@YonatanVainer请指出sql注入,我自己看不到。用于调试的console.log()有什么问题?而且,它不会写入日志文件,pm2会这样做,OP没有说正在使用pm2@LawrenceCherone关于SQL,您是对的。我不知道通过一个物体会逃走。非常感谢。关于日志记录,有人曾经告诉我“朋友们不要让朋友们用console.log调试”,我认为这是新来者带到生产环境中的错误。我对js比较陌生,你可以猜出来,哈哈。仍在努力寻找我的方向,包括账户创建等。关于console.log,我遵循的是一个他们这样做的教程。我遵循的是一个他们使用hbs而不是html的教程,当他们开始使用手刹时,我迷路了。非常感谢,我将检查AJAX并从那里继续。今天的AJAX非常简单,请检查javascript web API的
    fetch
    方法。并将其标记为已解决,如果对您有用