如何从Node.JS向Javascript客户端发送一个警报?

如何从Node.JS向Javascript客户端发送一个警报?,javascript,node.js,Javascript,Node.js,我正在使用mysql从node.js进行基本登录 在我的代码示例中,如果会话正确,请将我发送到一个名为“home”的html页面,但在这种情况下,我需要在您进行会话后,我的Javascript客户端发送一个警报,说明您已登录或其用户不正确。如果正确,则将单词“correct”保存在一个变量中,以便以后在javascript文件中使用 我如何发送该执行,以便我的javascript文件发送警报 app.post('/auth', function(request, response) { var

我正在使用mysql从node.js进行基本登录

在我的代码示例中,如果会话正确,请将我发送到一个名为“home”的html页面,但在这种情况下,我需要在您进行会话后,我的Javascript客户端发送一个警报,说明您已登录或其用户不正确。如果正确,则将单词“correct”保存在一个变量中,以便以后在javascript文件中使用

我如何发送该执行,以便我的javascript文件发送警报

app.post('/auth', function(request, response) {
var username = request.body.username;
var password = request.body.password;
if (username && password) {
    connection.query('SELECT * FROM accounts WHERE username = ? AND password = ?', 
        [username, password], function(error, results, fields) {
        if (results.length > 0) {
            request.session.loggedin = true;
            request.session.username = username;
            response.redirect('/home'); //Here I want to change the instruction so that my javascript file sends an alert and create a varible that I can use in my file Javascript
        } else {
            console.log('Incorrect Username and/or Password!');
        }           
        response.end();
    });
 });

谢谢

通过从服务器发送指令,无法直接在客户端执行代码。您要做的是发送信息,并在客户机上正确解释它

例如,您可以使用会话

if (results.length > 0) {
     request.session.loggedin = true;
     request.session.username = username;
     request.session.makeAlert = true;
     response.redirect('/home');
}
在回家的路上

app.get('/home', function(req, res){
    const dataYouSend = {};
    if (req.session.makeAlert) dataYouSend.makeAlert = true;
    res.send(dataYouSend);
});
最后,在/home路径上的JS代码中,使用您的数据

fetch('adress/to/your/home')
.then(response => {
     // It may not be precisely this, I don't know how you send data
  if (response.makeAlert) alert("Alert!!!");
})
.catch(err => {
    if(err) console.log(err);
});
在服务器端(快速中间件):

在客户端处理

角度:-

jQuery:-


下面是一个可以使用的肮脏技巧,但它将重新呈现ejs视图:

在服务器端(使用express):

在客户端(使用ejs模板):

1.在ejs模板上创建一个不可见的div,以访问服务器发送的ejs变量:

HTML:

2.在ejs末尾添加此js脚本(jquery)以访问此变量并创建警报:

<script>
      if($('div#status').text()!='')
      {
                alert($('div#status').text());
      }
</script>

如果($('div#status').text()!='')
{
警报($('div#status').text();
}

您使用的是模板引擎吗?@collinger否,我如何使用它?
response.json({message:“您的消息在这里”,状态:200//4XX表示任何错误})
然后在javascript(前端)中根据您的响应进入
然后进入
catch
。@ShaileshRathod,你有什么例子吗?@IsaacAlejandro你如何管理你的前端,你是否使用任何框架,或者仅仅通过NodeJS发送静态html文件?如何获取?
$http().....
.error(function(data, status) {
  console.error('Repos error', status, data);//"Repos error" 500 "User already exists."
});
$.ajax({
    type: "post",
    url: url,
    success: function (data, text) {
        //success code here.
    },
    error: function (request, status, error) {
        //error handling here.
    }
});
app.get('/route', function (req, res) {
    res.render('view', { errormessage: 'your message' });
});
  <div id='status' class='invisible'><%= errormessage %></div>
.invisible {
display: none;
visibility: hidden;
   }
<script>
      if($('div#status').text()!='')
      {
                alert($('div#status').text());
      }
</script>