在ejs模板中获取查询字符串

时间:2018-05-22 06:55:17

标签: node.js express ejs

我非常喜欢nodeJS,我有以下文件router.js

exports.redirectlogin = function ( req, res, next ) {
    // some logic
    res.redirect( '/login ', {redirecturl: req.originalUrl} );
};

我将req.originalUrl作为查询字符串传递。现在我想在login.ejs文件中访问它。我尝试了以下方法,但没有一个工作:

<div class="col-xs-6 log-in margin-20">Log In</div>
    <form class="margin-20" method="POST" action="/login">
        // some code
        <input name="redirecturl1" type="hidden" value="<%= redirecturl %>" />
        <input name="redirecturt2" type="hidden" value=<%= redirecturl %> />
        <input name="redirecturl3" type="hidden" value=<% redirecturl %> />
        // some code
    </form>
</div>

但是我收到一个错误,因为在所有这些情况下都没有定义redirecturl。在ejs文件中获取它的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您正在使用res.redirect,这会将用户发送到新的网址,而不会进行任何模板构建。在这种情况下,您需要在/login路由中添加代码,以从redirecturl对象中提取req,然后将其推送到/login内的模板中res.render致电。例如在app.get('login'...);

app.get('/login', function(req, res, next) {
  const redirectUrl = req.params.redirecturl;

  return res.render('pages/login', {redirecturl: redirectUrl });
});