[英]Passing variables on res.redirect
是否有一種簡單的方法可以在node.js / express中使用res.redirect傳遞變量,而無需將其附加到URL,或將其存儲在cookie或會話變量中?
我為什么要這樣做? 這是一個例子:
假設我在/ users有一個用戶頁面。 我可以在頁面/ users / add添加用戶。 我在/ users / add發布表單,如果它有錯誤,它會重新加載帶有錯誤消息的表單,如果成功通過,它會重定向回/ users頁面。 我想知道的是能夠知道我剛添加了一個用戶並為其顯示成功消息。
這是一個帖子的例子:
exports.usersAddPost = function(req, res, next) {
// validate form
if (!validated) {
// go back to form
return res.render('users/add', req.body.whatever);
} else {
// go back to users list
// need some way to tell users page that a user was just added
return res.redirect('users');
}
};
我實際上決定使用會話,因為我找到了一個很好的方式來做得相當優雅。
在重定向之前,我將會話設置為:
req.session['success'] = 'User added successfully';
res.redirect('users');
在用戶頁面上,我檢查成功變量並將其傳遞給我的模板(如果存在),然后重置它我只是將其設置為null。 這完全符合我的需要。
如果你可以使用javascript,你可以使用http referer並假設剛剛添加了一個用戶,因為根據你的工作流程,它是唯一可能發生的方式:
document.referrer == "/users/add"
如何使用元刷新顯示簡單的html? 例:
function redirectFlash(url, timeout, msg) {
var defaultTimeout = 5;
if (typeof timeout === 'string') {
msg = timeout;
timeout = defaultTimeout;
} else if (timeout === undefined) {
msg = '';
timeout = defaultTimeout;
}
return '<html><head><title>Redirecting ...</title><meta http-equiv="refresh" content="'
+ timeout
+ ';url='
+ url
+ '"></head><body>'
+ msg
+ '<br /><a href="'
+ url
+ '">Click here to return manually</a></body></html>';
}
exports.usersAddPost = function(req, res, next) {
// validate form
if (!validated) {
// go back to form
return res.render('users/add', req.body.whatever);
} else {
// go back to users list
// need some way to tell users page that a user was just added
return res.end(redirectFlash('/users', 'User added successfully. Returning you to the user list ...'));
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.