我使用JavaScript通过ejs传递数组。我可以使用ejs中的值,但不能使用JavaScript。以下是更多信息。
node.js
FileTypes = {"application/octet-stream":20,
"audio/mpeg":12,
"text/html" :71}
res.render('index.ejs', {FileTypes: JSON.stringify(FileTypes)});
index.ejs
<script type="text/javascript">
var FileTypes = <%=FileTypes%>;
//Error message on the console - Uncaught SyntaxError: Unexpected token &
</script>
有什么想法吗?
答案 0 :(得分:5)
使用EJS中的<%= %>
标记会转义输出,因此{"application/octet-stream": ... }
正在转换为{"application/octet-stream": ... }
,从而产生如下JavaScript:
<script type="text/javascript">
var FileTypes = {"application/octet-stream":20,"audio/mpeg":12,"text/html":71};
</script>
所以,你可以看到“意外的令牌&amp;”的位置是来自。解决方案是使用<%- %>
标记,它不会转义输出:
<script type="text/javascript">
var FileTypes = <%- FileTypes %>;
// here -----^
</script>
......并会给你你想要的东西:
<script type="text/javascript">
var FileTypes = {"application/octet-stream":20,"audio/mpeg":12,"text/html":71};
</script>