如何通过从ejs传递数组值到Javascript?

har*_*hvc 3 javascript ejs node.js

我通过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)});
Run Code Online (Sandbox Code Playgroud)

index.ejs

 <script type="text/javascript">

   var FileTypes =  <%=FileTypes%>;
   //Error message on the console - Uncaught SyntaxError: Unexpected token & 

 </script>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jor*_*ing 5

<%= %>在EJS中使用标记将转义输出,因此{"application/octet-stream": ... }正在变为{&quot;application/octet-stream&quot;: ... },导致这样的JavaScript:

<script type="text/javascript">                                                                                                                                          
  var FileTypes = {&quot;application/octet-stream&quot;:20,&quot;audio/mpeg&quot;:12,&quot;text/html&quot;:71};
</script>
Run Code Online (Sandbox Code Playgroud)

因此,您可以看到"意外令牌"的来源.解决方案是使用<%- %>标签,它不会逃避输出:

<script type="text/javascript">
  var FileTypes = <%- FileTypes %>;
  //      here -----^
</script>
Run Code Online (Sandbox Code Playgroud)

......并会给你你想要的东西:

<script type="text/javascript">                                                                                                                                          
  var FileTypes = {"application/octet-stream":20,"audio/mpeg":12,"text/html":71};
</script>             
Run Code Online (Sandbox Code Playgroud)