Express和ejs<%=呈现JSON

时间:2012-12-09 14:29:17

标签: javascript json express ejs

在我的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?

3 个答案:

答案 0 :(得分:166)

哦,这很容易,不要使用<%=,而是使用<%-。例如:

 <%- JSON.stringify(user) %>

第一个将以HTML格式呈现,第二个将呈现变量(因为它们是eval)

答案 1 :(得分:3)

注意!

如果可以通过API调用创建用户,&lt;% - 会给您留下严重的XSS漏洞。可以在这里找到可能的解决方案:

Pass variables to JavaScript in ExpressJS

答案 2 :(得分:0)

如果像我一样,您的对象可以包含转义字符,例如/",请使用此更强大的解决方案

var current_user = <%- JSON.stringify(user).replace(/\\/g, '\\\\') %>