如何用res.redirect('/')发送一个flash消息来启动js

如何在Sails中用res.redirect('/')发送一个flash消息?

当我检查控制器中的一些条件,然后我想redirect到另一个URL,传递一个flash消息。

我是新来的帆,所以任何帮助将不胜感激。

控制器操作:

 module.exports ={ index: function (req, res) { if(req.param('key')){ req.flash('message', 'welcome key is present'); res.redirect('/view/'); } else { req.flash('message', 'welcome key is not present'); res.redirect('/'); } } } 

提前致谢。

你的代码对于控制器看起来很好。 在你看来,你可以像req.flash('message')那样访问flash消息,所以在一个.ejs文件中,例如它就是<%- req.flash('message') %>

我发现任何redirect数据的最好办法是将http代码设置为307,它将redirectpost / put / delete数据。

 req.flash('message'); res.redirect(307, '/'); 

另一种解决scheme是在渲染redirect模板的路由中传递消息参数。

那么让我们来看看你的例子(稍作修改):

 module.exports ={ index: function (req, res) { if(req.param('key')){ req.flash('info', 'welcome key is present' ); res.redirect('/view/'); } else { req.flash('info', 'welcome key is not present'); res.redirect('/'); } } } 

然后在“查看”的路线中,你会有这样的东西:

 app.get('/view', function(req, res){ var messages = {}; if (typeof res.locals.messages.info != 'undefined'){ messages = res.locals.messages.info; } res.render('view.ejs', { messages: messages }); }); 

然后在你的view.ejs中:

 <% if (typeof messages != 'undefined' && messages.length > 0) { %> <% for (var i in messages) { %> <div class="alert alert-info"> <%= messages[i] %> </div> <% } %> <% } %> 

另外在你的主server.js文件中:

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