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

San*_*ngh 1 html rest node.js express

html包含

form(name="Form", action="/", method="post")
  button(type='submit') submit
Run Code Online (Sandbox Code Playgroud)

Express服务器包含:

app.post('/', function(req, res){   
  res.render('home', {user: req.body});
});
Run Code Online (Sandbox Code Playgroud)

如预期的那样,home.jade它在浏览器中呈现。但是,当我home.jadehttp://localhost:3000It 处刷新文件时,要求重新提交确认表单,我想摆脱这个- Confirm Form Resubmission

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

And*_*ren 5

问题并不是由您的代码引起的,而是由浏览器在您收到POST的响应后希望再次发布。解决此问题的常用方法是重定向到同一页面。

app.post('/', function(req, res){   
  res.redirect('/');
});
Run Code Online (Sandbox Code Playgroud)

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

更新以反映更新的问题

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

app.use(express.cookieSession());

app.post('/', function(req, res){
  req.session.user = req.body;
  res.redirect('/');
});
Run Code Online (Sandbox Code Playgroud)

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

app.get('/', function(req, res){
  res.render('home', { user: req.session.user });
});
Run Code Online (Sandbox Code Playgroud)