【发布时间】:2016-05-25 12:05:37
【问题描述】:
我的问题与this 非常相似,但也不同,答案对我不起作用。
我有一个表单要发布,我需要在页面上显示一条消息,无论它是否成功地将数据输入数据库。所以我有:
app.post('/add_new', upload.single('image'), function add_new(req, res, err)
{
var image = req.body.image;
// do some checks and try to insert
if (err){
res.render('page_name',{images:images, message:'There was an error'})
}
else{
images.push(image);
res.render('page_name',{images:images, message: 'Success'})}
}
}
错误/成功消息在客户端处理。
我的问题是它实际上并没有完成帖子。它正确地呈现带有错误/成功消息的页面,但 URL 看起来像“my_site.com/add_new”,如果用户出于任何原因刷新页面,它会发送“表单重新提交”警报,这会导致问题。我需要它返回“my_site.com”并显示消息。
我发现这样做
res.redirect('back')
返回正确的页面,但显然不显示消息。 我注意到一些推荐的答案
res.end('Success')
但这只是显示一个带有“成功”一词的白页 - 我不知道有人认为这是一个可以接受的解决方案!
编辑: 按照 Vinay 的回答,我的代码现在如下所示:
app.post('/add_new', upload.single('image'), function add_new(req, res, err)
{
var image = req.body.image;
// do some checks and try to insert
if (err){
req.session.msg='error adding';
res.redirect('page_name');
}
else{
images.push(image);
req.session.msg='success';
res.redirect('page_name');
}
}
这是获取页面:
app.get('/page_name', is_logged_in, function(req, res) {
if(req.session.msg){
res.render('page_name', {images: images, user:req.user, message: req.session.msg});
setTimeout(req.session.msg="", 4000);
}
else{
res.render('page_name', {images: images, user:req.user, message:''});
}
});
但是我仍然发现刷新页面时错误消息仍然存在。我是不是搞错了?
【问题讨论】:
标签: javascript node.js forms