83

私のindex.ejsには、次のコードがあります。

var current_user = <%= user %>

私のノードには

app.get("/", function(req, res){
    res.locals.user = req.user
    res.render("index")
})

しかし、私が入手したページでは

var current_user = [object Object]

そして私が書くなら

var current_user = <%= JSON.stringify(user) %>

私が得る:

var current_user = {&quot;__v&quot;:0,&quot;_id&quot;:&quot;50bc01938f164ee80b000001&quot;,&quot;agents&quot;:...

JSで読み取り可能なJSONを渡す方法はありますか?

4

4 に答える 4

207

ああ、それは簡単でした、使用しないで、代わり<%=に使用してください。<%-例えば:

 <%- JSON.stringify(user) %>

最初のものはHTMLでレンダリングされ、2番目のものは変数をレンダリングします(そのままeval)

于 2012-12-09T14:32:18.770 に答える
5

注意!

API呼び出しを介してユーザーを作成できる場合、<%-は深刻なXSSの脆弱性を残します。考えられる解決策はここにあります:

ExpressJSでJavaScriptに変数を渡す

于 2016-02-21T09:30:42.023 に答える
2

私のように、オブジェクトに次のようなエスケープ文字を含めることができる場合は、/この"より堅牢なソリューションを使用してください

var current_user = <%- JSON.stringify(user).replace(/\\/g, '\\\\') %>
于 2020-11-24T01:38:47.740 に答える
0

これは、Expressの最新バージョンで機能するようになりました

于 2022-02-05T16:08:46.763 に答える