【问题标题】:Express redirect and pass javascript variable快速重定向并传递 javascript 变量
【发布时间】:2017-12-19 15:27:46
【问题描述】:

我有一个网站,我希望允许用户提交一条信息(为简单起见,我们假设他们的名字)。他们提交他们的名字,这将通过一个 post 请求发送到服务器,并为他们返回一个唯一的 url。

目标:当用户访问 mysite.com/their-unique-url 时,它会将他们带到 mysite.com/index.html,修改为使他们的名称(存储在数据库中带有他们独特的网址)显示在页面上。

我怎样才能将用户快速重定向到 index.html,并在这样做的同时传递一个 JavaScript 变量供 index.html 使用?

app.get("/:unique", function(req, res){
names.findOne({ 'id' : req.params.unique }, 'name', function (err, name) {
  if (err) return console.error(err);
  res.redirect('/'); //but I also want to pass 'name' to index.html
});

【问题讨论】:

  • res.render 获取一个视图/模板文件(.pug,取决于您的模板引擎)并使用第二个参数中对象中提供的上下文呈现它。无需向其传递回调。
  • @perfect5th 是否有可能在不使用模板引擎的情况下实现我的目标?

标签: javascript html express redirect web


【解决方案1】:

我找到的解决方案是使用 queryString 和正则表达式。

服务器端,添加查询字符串重定向:

res.redirect('/?name=' + name);

客户端,使用正则表达式从查询字符串访问变量:

function getUrlParameter(name) {
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
    var results = regex.exec(location.search);
    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
};
console.log("name: " + getUrlParameter('name'));

但是,由于查询字符串的限制,我仍在寻找不使用查询字符串或模板引擎的解决方案。

【讨论】:

    猜你喜欢
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2018-04-07
    • 2020-04-03
    相关资源
    最近更新 更多