快速重定向并传递javascript变量

时间:2017-07-14 13:40:04

标签: javascript html express redirect web

我有一个网站,我想让用户提交一条信息(为简单起见,我们假设他们的名字)。他们提交了自己的名字,并通过邮寄请求发送到服务器,并为他们返回一个唯一的网址。

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

如何将表达用户重定向到index.html,并在执行此操作时,传递一个用于index.html的JavaScript变量?

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
});

1 个答案:

答案 0 :(得分:0)

我找到的解决方案是使用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'));

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