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 呈现,第二个将呈现变量(因为它们是 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 回答