簡體   English   中英

在res.redirect上傳遞變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM