这是我渲染 View 和传递数据的代码。
var x = '{"products":[{"id":"1"},{"id":"2"},{"id":"3"}]}';
res.render('home', {test:x});
这是我的循环和显示数据的代码
<ul>
<% for(var i=0; i<test.products.length; i++) { %>
<li>
<%= test.products[i].id %>
</li>
<% } %>
</ul>
我不断收到无法读取未定义的属性“长度”错误。我到底做错了什么?
最佳答案
x 引用的对象是一个字符串。您需要使用 JSON.parse(test)
将其解析为 JSON 对象,在模板中使用它如下所示:
for(var i=0; i<JSON.parse(test).products.length; i++)
或者,在设置变量 x 时,将其作为 JavaScript 对象传递:
var x = {"products":[{"id":"1"},{"id":"2"},{"id":"3"}]};
关于node.js - 解析 EJS 模板中包含数据的 JSON 数组时,无法读取未定义的属性 'length'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51613014/