2017-07-14 3 views
1

私は、ユーザが単一の情報を提出できるようにするサイトを用意しています(簡単にするため、名前を付けましょう)。彼らは自分の名前を送信し、これは投稿リクエストとともにサーバーに送られ、ユニークなURLが返されます。エクスプレスリダイレクトとパススルーjavacript変数

目的:ユーザーがmysite.com/their-unique-urlに行くと、mysite.com/index.htmlに移動し、その名前(データベース内の一意のURL )がページに表示されます。

私はどのようにして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

res.renderはビュー/テンプレートファイル(テンプレートエンジンに応じて.pug)を取り出し、2番目の引数のオブジェクトに指定されたコンテキストでレンダリングします。コールバックを渡す必要はありません。 – perfect5th

+0

https://stackoverflow.com/questions/19035373/how-do-i-redirect-in-expressjs-while-passing-some-contextの複製がありますか? – perfect5th

+0

@ perfect5thテンプレートエンジンを使わずに何をしようとしているのですか? – Sam

答えて

0

私が見つけた解決策は、&正規表現をクエリ文字列を使用することです。

サーバー側、リダイレクトするようにクエリ文字列を追加します。

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やテンプレートエンジンを使用しないソリューションを探しています。

関連する問題