node.js - 如何在 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(出于绝望)仍然没有用。
非常感谢您提前。
解决方案
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');
});
推荐阅读
- javascript - 如何在滚动时使用 JavaScript 检测特定的 CSS 类?
- python-3.x - 在 Keras 中加载数据集时如何修复错误?
- flutter - 如何使用密码验证 (dd-mm) 格式的当前日期
- javascript - 如何在 Aurelia 中对表单验证进行单元测试
- android - EditText 没有在自定义复合视图中获得焦点
- php -
DOMDocument saveHTML() 中的标记后出现换行符 - coreml - 如何创建可更新的 coreml 模型?
- javascript - 如何在 Reactjs 中映射和过滤
- zsh - Zsh 中关于 EQUALS 选项的困惑
- c++ - 派生类的复制构造函数