在不重新加载页面的情况下发送通知等消息

时间:2017-12-12 11:47:19

标签: node.js express

我试图以这样的方式在页面上实现Flash消息,它们就像用户在该页面上提交的内容的状态更新一样。详细地说,该页面上有一个表单,一旦用户按下提交,它就会被发布到处理处理的路由,但这需要一些时间。 在此处理期间,我想在同一页面上提供状态更新,理想情况下无需一直重新加载页面。

作为一个极端的例子,这样的事情怎么可能起作用:

app.get('/index', function(req,res) {
    for (var i = 0; i < 100; i++) {
        //send a flash every 2 seconds
        setTimeout(function(i) {
            req.flash('This is ' + i);
        }, 2 * 1000 * i, i);
    };
    res.render('../views/index.ejs');
})

这可能吗?我看了一下&#39; express-flash-notification&#39;,我不确定它是否可以做到这一点。

1 个答案:

答案 0 :(得分:1)

通常,当您模拟新页面时,Flash通知会添加一些额外信息。如果您不想重新加载页面,express-flash-notification等库将没有多大用处。

此场景的常见方法是使用JavaScript在浏览器中进行HTTP调用,并使用返回的信息动态更新DOM。你可以选择使用像AJAX这样的东西(在jQuery中找到)。

总体流程就是这样,但你可以根据自己的特定需求进行定制。

  1. 使用来自前端JS的AJAX调用发送表单(可能您正在处理图像或其他内容)。
  2. 服务器发回200 OK响应以指示上传成功。
  3. 然后,前端每隔几秒向服务器发出一次HTTP请求,要求进行状态更新。这将以json(res.json({}))的形式返回。然后前端JS会根据需要显示它。
  4. 你可以选择使用类似网络套接字的东西进行状态更新,但如果这是你第一次接近前端AJAX调用,那么我建议现在轮询(每隔几秒发一次请求)。