【发布时间】:2016-09-04 09:32:13
【问题描述】:
当我将一个包含对象数组的对象从我的快速路由发送到我的客户端时,我得到一个 [Object object],然后当我尝试对其进行字符串化时,我得到这个带有此控制台消息的疯狂字符串
var messages = "<%=(JSON.stringify(messages))%>"
console.log(messages)
将其打印到控制台...
{"messages":[{"content":"cool mane","creator":"joe"},{"content":"test 4","creator":"joe"},{"content":" ewgdqf","creator":"joe"},
它应该是一些东西,所以我可以通过这样做来迭代它 messages[0].content 但我得到了这个疯狂的字符串,它不会让我对它做任何事情......
如果我尝试循环遍历它,它只会单独打印出每个字符。
【问题讨论】:
-
似乎
<%= ... %>是对输出进行 HTML 编码。模板引擎通常提供一种无需编码即可输出内容的方法。一旦你解决了这个问题,你还需要JSON.parse字符串。仍然想知道是否有更好的方法将对象传递给客户端。 -
我认为没有其他方法可以将数据发送到客户端,但 JSON.parse 每次尝试使用它时都会给我一个错误,即使在我将其字符串化后
-
@T.J.Crowder 这只是我尝试了 100 种不同的东西时的错字,当我回到原来的代码时不小心保留了它们
-
如您所说,您需要先修复输出,然后才能使用
JSON.parse。无论是什么,您都必须使用<%= ... %>的非编码版本。您使用的是哪个模板引擎? -
呃,我很愚蠢。只需
var messages = <%-JSON.stringify(messages)%>;。
标签: javascript json express ejs