繁体   English   中英

如何使用 ejs 从 javacsript 中的 node.js 访问数组

[英]How can I acess a array from node.js in javacsript with ejs

所以我正在制作一个应用程序,它需要将一个数组从服务器传递到客户端。 我试过做

// Server
app.get('/', (req,res) => {
  res.render('index', {
    data: ["Hello"]
  })
})

// EJS
<script>
  const data = '<%- JSON.stringify(locals.data) || [] %>'
</script>

但是它不是 ejs 中的数组所以我试过了

// Server
app.get('/', (req,res) => {
  res.render('index', {
    data: ["Hello"]
  })
})

// EJS
<script>
  const data = JSON.parse('<%- JSON.stringify(locals.data) || [] %>')
</script>

这一直有效,直到我传递了一个带有'的数组,无论如何我可以将数组传递给 javascript 并且在某些章程中遇到问题?

这是与不和谐机器人一起使用以获取服务器并将其显示在页面上。 所以我想确保它可以显示所有字符。

如果我将'更改为"或 `,它仍然可能导致某些输入出现问题。

谢谢。

这就是@hacKaTun3s 的答案:

const data = <%- JSON.stringify(locals.data) || [] %>

但这会导致语法错误并且可能很烦人,所以我正在使用它:

EJS:

<p hidden id=scrpt_get_locals><%= JSON.stringify(locals) %></p>

它将被隐藏,我们将在脚本中访问其内容。

JAVASCRIPT:(推迟)

const locals = JSON.parse(document.getElementById('scrpt_get_locals').innerText) // Get element text that has locals, then parse it
document.getElementById('scrpt_get_locals').innerText = '' // Remove the text (So we don't have a random element with the locals
document.getElementById('scrpt_get_locals').id = '' // Remove id (Optional)

编辑:

顶部访问变量数据,您将:

console.log(locals.data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM