Node.js:使用纯html向客户端返回数据

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 (

我想通过node.js创建一个非常简单的登录

我现在的问题是,如果用户输入了错误的密码,我想在html中添加一个新标签,上面写着“用户名或密码不正确” 如何仅使用纯html实现这一点

我现在得到的是,我将被重定向到/login,其中显示“缺少用户名或密码”,但我想留在登录页面上

另一点是,我希望保持服务器端重定向。客户端重定向似乎是一种糟糕的做法

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方法