我有一个网站,我希望允许用户提交一条信息(为简单起见,我们假设他们的名字)。他们提交自己的姓名,该姓名会通过 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
});
最佳答案
我找到的解决方案是使用 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 的限制,我仍在寻找一种不使用 queryString 也不使用模板引擎的解决方案。
关于javascript - 快速重定向并传递 JavaScript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45104482/