我有一个网站,我想让用户提交一条信息(为简单起见,我们假设他们的名字)。他们提交了自己的名字,并通过邮寄请求发送到服务器,并为他们返回一个唯一的网址。
目标:当用户访问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
});
答案 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或模板引擎的解决方案。