gpt4 book ai didi

node.js - 在 EJS 中循环 JSON

转载 作者:IT老高 更新时间:2023-10-28 21:55:44 26 4
gpt4 key购买 nike

我在下面的 EJS 中有代码,

<script>
var row =<%-JSON.stringify(data)%>
console.log(row);
</script>
<% for(var i=0; i<JSON.stringify(data).length; i++) {%>
<tr>
<td>
<%= JSON.stringify(data)[i].id%>
</td>
</tr>
<% } %>

行的输出是正确的,一个由 3 个对象组成的数组,每个对象都有属性 id、name 等。我可以操纵行以在 JS 中填充表格。但是,我想知道是否有办法允许以上述方式完成?

当我运行上面的代码时,JSON.stringify(data).length 不是 3,而是整个字符串的长度。

另一个问题是当我尝试添加时

<% 警报('t'); %> 或 <% window.alert('t'); %>,它给了我“未定义”的错误...

帮助表示赞赏。

问候锤子

最佳答案

JSON.stringify 返回一个 String。所以,例如:

var data = [
{ id: 1, name: "bob" },
{ id: 2, name: "john" },
{ id: 3, name: "jake" },
];

JSON.stringify(data)

将返回等价于:

"[{\"id\":1,\"name\":\"bob\"},{\"id\":2,\"name\":\"john\"},{\"id\":3,\"name\":\"jake\"}]"

作为 String 值。

所以当你有

<% for(var i=0; i<JSON.stringify(data).length; i++) {%>

最终的样子是:

<% for(var i=0; i<"[{\"id\":1,\"name\":\"bob\"},{\"id\":2,\"name\":\"john\"},{\"id\":3,\"name\":\"jake\"}]".length; i++) {%>

这可能不是你想要的。您可能确实想要的是这样的:

<table>
<% for(var i=0; i < data.length; i++) { %>
<tr>
<td><%= data[i].id %></td>
<td><%= data[i].name %></td>
</tr>
<% } %>
</table>

这将输出下表(使用上面的示例 data):

<table>
<tr>
<td>1</td>
<td>bob</td>
</tr>
<tr>
<td>2</td>
<td>john</td>
</tr>
<tr>
<td>3</td>
<td>jake</td>
</tr>
</table>

关于node.js - 在 EJS 中循环 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22952044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com