Javascript 如何输出一个';确认';用户单击提交后我的注册页面上的消息?
我有一个nodejs服务器,并用html创建了一个注册页面。单击submit按钮时,我创建的服务器接收输入并检查值 如果用户已添加到数据库,我希望注册页面返回一条新消息,说明“用户已添加” 现在我使用“res.sendFile()”并再次发送页面,但我希望这样做并添加一个新的消息元素 以下是服务器中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
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>
创建帐户
用户登录测试
登记
电子邮件地址
用户名
密码
确认密码
提交
你为什么要这样做?
是要求还是你的决定?
我想你有几种方法可以做到这一点
小贴士: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
方法。并将其标记为已解决,如果对您有用