首页 > 解决方案 > 如何在 node.js 中从 post 路由重定向到 get 路由

问题描述

我是 node js 的新手,正在制作一个迷你留言板作为作业。我想要做的是在按下“提交”时将用户从 localhost:3000/new 重定向到 localhost:3000/index。我尝试使用 res.redirect 但它不起作用。

这是代码: -

router.get('/', function(req, res, next) {
  res.render('index', {
    title: 'MINI-MESSAGE-BOARD',
    message: messages
  });
});

router.post('/new', function(req, res, next) {
  var userMessage=req.body.messagesName;
  var userName=req.body.userName;
  res.render('new');

  messages.push({
    name: userName,
    text: userMessage,
    date: new Date()
  });
  res.redirect('/index');
});

module.exports = router;

我在上面声明了一个消息数组。

我还在 pug 中为 new.js 创建了一个表单,它是:

form(action="/new" method="POST" redirect="/index")
  input(type="text" placeholder="write something" name="userName")
  br
  br
  input(type="text" placeholder="write something" name="messagesName")
  button(value="SUBMIT")

我试过给按钮一个href(出于绝望)仍然没有用。

非常感谢您提前。

标签: node.js

解决方案


Express 无法呈现响应然后重定向,因为它们各自向客户端发送不同的 HTTP 响应标头。你可以做一个或另一个。

去除res.render()

router.post('/new',function(req,res,next){
      var userMessage=req.body.messagesName;
      var userName=req.body.userName;

      messages.push({name:userName,text:userMessage,date: new Date()});
      res.redirect('/index');
});

推荐阅读