当我从我的快速路径向我的客户端发送一个包含对象数组的对象时,我得到一个[Object对象],然后当我尝试对其进行字符串化时,我得到了这个带有此控制台消息的疯狂字符串
var messages = "<%=(JSON.stringify(messages))%>"
console.log(messages)
将其打印到控制台......
{"messages":[{"content":"cool mane","creator":"joe"},{"content":"test 4","creator":"joe"},{"content":" ewgdqf","creator":"joe"},
应该是这样的东西,所以我可以通过这样做来迭代它 消息[0] .content但是我得到了这个疯狂的字符串,它不会让我对它做任何事情......
如果我试图遍历它,它只会打印出每个字符。
答案 0 :(得分:11)
使用<%= ... %>
时,EJS将编码/转义任何输出。这就是为什么JSON中的"
被编码为"
的原因。 According to this answer,您可以使用<%- ... %>
来阻止转义。
也不需要将输出放在字符串文字中。这实际上很糟糕,因为您可以通过嵌套引号获得问题。只需将其直接输出到JS代码中:
var messages = <%-JSON.stringify(messages)%>;
答案 1 :(得分:-1)
尝试改变这一点:
var messages = "<%=(JSON.stringify(messages))%>"
console.log(messages)
有了这个:
var messages = JSON.stringify("<%=messages%>");
console.log(messages)