如何用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(); });