我有用例需要渲染然后重定向。渲染应该使用继承视图模型然后重定向到主页来通知用户成功的事务。以下是所需的代码:
router.post('/posturi', function(req, res, next) {
//Call few services
if(err){
return res.render('/errorpage')
}
res.render('/transaction page');
//TimeOut function goes here
res.redirect('/home');
});
一种方法是在下一个插入中间件,但这看起来不是最好的方法。如果有办法实现,请告诉我
答案 0 :(得分:4)
正如其他人所说,在使用302状态时,您不能同时拥有重定向和呈现内容。但是,您可以做的是使用呈现的内容返回200状态,然后在页面本身中使用<meta>
标记或setTimeout()
进行重定向。这将简要显示内容(无论您想要设置多长时间),然后重定向到新页面。
例如,您可以将其放在实际的页面内容中,以便浏览器本身在显示您的内容后进行重定向:
<script>
setTimeout(function() {
window.location.replace("http://whatever.com/newpage.html")
}, 2000);
</script>
或者这个:
<meta http-equiv="refresh" content="2;url=http://whatever.com/newpage.html">
答案 1 :(得分:3)
没有。这是因为redirect
和render
都会发送标题并完成响应。内容发送后,您无法发送标题。