Node.js:使用纯html向客户端返回数据
我想通过node.js创建一个非常简单的登录 我现在的问题是,如果用户输入了错误的密码,我想在html中添加一个新标签,上面写着“用户名或密码不正确” 如何仅使用纯html实现这一点 我现在得到的是,我将被重定向到/login,其中显示“缺少用户名或密码”,但我想留在登录页面上 另一点是,我希望保持服务器端重定向。客户端重定向似乎是一种糟糕的做法Node.js:使用纯html向客户端返回数据,node.js,authentication,server,Node.js,Authentication,Server,我想通过node.js创建一个非常简单的登录 我现在的问题是,如果用户输入了错误的密码,我想在html中添加一个新标签,上面写着“用户名或密码不正确” 如何仅使用纯html实现这一点 我现在得到的是,我将被重定向到/login,其中显示“缺少用户名或密码”,但我想留在登录页面上 另一点是,我希望保持服务器端重定向。客户端重定向似乎是一种糟糕的做法 app.post('/login', function (req, res) { database.query("SELECT EXISTS (
app.post('/login', function (req, res) {
database.query("SELECT EXISTS ( SELECT * FROM Users WHERE username = '" + req.body.username + "' AND password = '" + req.body.password + "')", function(err, data) {
if(err) {
console.log(err);
}
else{
if(Object.values(data[0])[0] != 1) {
res.status(400).send('Missing username or password'); // send this msg to html
}
else{
res.redirect("main.html");
}
res.end();
}
});
});
app.listen(3001);
我不理解纯html部分。你是说服务器端没有javascript/ajax或模板引擎吗 如果我只需要使用表单post,我会使用EJS。否则,您可以使用ajax请求 问题是您正在将html结果返回给客户端。如果您使用EJS,您必须按以下方式返回:
return res.render('login.html', {errMsg:'Missing username or password'});
是的,不幸的是,如果不使用像ejs这样的渲染引擎,我无法直接更改html。顺便说一句,如果这个代码示例可以在生产环境中使用,请记住,它很容易受到sql注入的影响。例如,任何人都可以将req.body.username作为“blabla”或1=1发送;。请至少使用默认的mysql.format方法