首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不刷新页面的情况下使用快捷和连接闪存来显示闪存?

如何在不刷新页面的情况下使用快捷和连接闪存来显示闪存?
EN

Stack Overflow用户
提问于 2014-08-25 07:07:27
回答 1查看 18.9K关注 0票数 15

快速连接-闪存只在刷新后显示。为了便于阅读,删除了代码。

代码语言:javascript
复制
"express": "~4.2.0",
"connect-flash": "~0.1.1",

这是我的app.js

代码语言:javascript
复制
var express = require('express'),
    favicon = require('serve-favicon'),
    flash = require('connect-flash');
var app = express();
app.use(cookieParser('---'));
app.use(session({
  secret: '---',
  saveUninitialized: true,
  resave: true}));
app.use(flash());

app.use(function(req, res, next) {
  res.locals.messages = req.flash();
  next();
});

在我的路线上,我尝试了

代码语言:javascript
复制
req.flash('success', {msg: 'Sign Up Success'});
res.redirect('/me/dashboard');

我的错误显示msg.jade模板是

代码语言:javascript
复制
for msg in messages
      div #{msg.msg}

:我只在刷新/刷新后才收到消息。请让我知道我做错了什么。

我也看过this,但我觉得已经过时了

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-18 09:57:56

您正在中间件中调用flash方法,这是中间件的预期行为。中间件将在下一个请求中读取消息&根据您的逻辑设置它的局部变量。

中间件是如何工作的?

当请求传入时,它将传递给第一个中间件函数,以及一个包装好的ServerResponse对象和一个下一个回调。中间件可以通过调用响应对象上的方法来决定响应,并/或通过调用方法next()将请求传递到堆栈中的下一层。

连接-flash

闪存是会话中用于存储消息的特殊区域。消息被写入闪存,并在显示给用户后清除。闪存通常与重定向结合使用,确保消息可用于要呈现的下一页。

我只有在刷新/重定向?之后才会收到消息

代码语言:javascript
复制
app.use(function(req, res, next) {
    res.locals.messages = req.flash();
    next();
});

上面的中间件将调用每个请求&设置req.flash()值。因此,您将在当前页面上的每个下一个(后续) request.Not上获得request.Not值,而无需重定向/刷新页面。

要在不刷新的情况下重写此行为以获取值,您必须调用req.flash()函数,该函数可用于res.locals.messages = req.flash();路由器中的闪存消息。

示例:-要在页面上显示失败的登录消息而不刷新页面,并在路由器中设置新的闪存消息后成功地重定向页面。

代码语言:javascript
复制
router.post("/login", function (req, res) {
    var username = req.body.username;
    var pwd = req.body.pwd;
    if (username === "demo" && pwd === "demo") {
        req.flash("messages", { "success" : "Sign Up Success" });
        res.redirect("/me/dashboard");
    } else {
        req.flash("messages", { "error" : "Invalid username or password" });
        res.locals.messages = req.flash();
        res.render("login', { title: 'Login"});
    }
});

结论:通过在路由器本身中赋值来获取同一page.Override上的消息,中间件的行为。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25480633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档