通过app.post('/',在expressjs中呈现的页面上的'确认表单重新提交'问题

时间:2013-09-04 13:19:34

标签: html node.js rest express

html包含

form(name="Form", action="/", method="post")
  button(type='submit') submit

Express服务器包含:

app.post('/', function(req, res){   
  res.render('home', {user: req.body});
});

正如所料,home.jade在浏览器中呈现。但是当我在home.jade刷新http://localhost:3000文件时,它要求确认表单重新提交我想要摆脱这个 - Confirm Form Resubmission

home.jade文件是包含简单文本的简单文件。

1 个答案:

答案 0 :(得分:4)

问题并非真正由您的代码引起,而是当您收到来自POST的响应时,浏览器希望再次发帖。解决此问题的常用方法是重定向到同一页面。

app.post('/', function(req, res){   
  res.redirect('/');
});

现在,当您刷新浏览器时,将重新获取GET'/'。

更新以反映更新的问题

要呈现在重定向页面上发布的数据,可以使用会话。

app.use(express.cookieSession());

app.post('/', function(req, res){
  req.session.user = req.body;
  res.redirect('/');
});

在GET'/'的中间件中,你必须确保使用该参数

app.get('/', function(req, res){
  res.render('home', { user: req.session.user });
});