繁体   English   中英

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

[英]How can I send one alert from my Node.JS to my Javascript client?

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

在我的代码示例中,如果会话正确,将我发送到一个名为“home”的 html 页面,但对于这种情况,我需要在您进行会话后,我的 Javascript 客户端发送一个警报,说明您已登录或用户不正确。 如果正确,请将“正确”一词保存在一个变量中,以便稍后在我的 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();
    });
 });

谢谢

这是您可以使用的肮脏技巧,但它会重新呈现 ejs 视图:

在服务器端(使用快递):

app.get('/route', function (req, res) {
    res.render('view', { errormessage: 'your message' });
});

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

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

HTML:

  <div id='status' class='invisible'><%= errormessage %></div>

CSS:

.invisible {
display: none;
visibility: hidden;
   }

2.在ejs的末尾添加这个js脚本(jquery)来访问这个变量并创建一个警报:

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

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

例如,您可以使用会话

if (results.length > 0) {
     request.session.loggedin = true;
     request.session.username = username;
     request.session.makeAlert = true;
     response.redirect('/home');
}

在/ 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);
});

在服务器端(Express中间件):

if(userNotExist) return res.status(401).end('Incorrect Username and/or Password!');

在客户端处理。

角度:-

$http().....
.error(function(data, status) {
  console.error('Repos error', status, data);//"Repos error" 500 "User already exists."
});

的jQuery:-

$.ajax({
    type: "post",
    url: url,
    success: function (data, text) {
        //success code here.
    },
    error: function (request, status, error) {
        //error handling here.
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM