node.js - 解析 EJS 模板中包含数据的 JSON 数组时,无法读取未定义的属性 'length'?

标签 node.js ejs

这是我渲染 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/

相关文章:

node.js - 如何使用 Nestjs 中的请求范围提供程序动态更改数据库连接?

node.js - sudo npm install 给我拒绝访问

javascript - 是否可以将参数拆分为 NodeJS 中的值?

javascript - 如何将 view locals in action as machine 配置

Node.js 用 ejs 显示 mysql 查询

node.js - 语法错误 : Unexpected token ')' in ejs file

node.js - 如何在node.jsexpress中获取url资源路径匹配?

node.js - 在另一个平台(Grails)旁边使用 Node.js

node.js - 错误 : Cannot find module 'ejs'

javascript - 当我链接 html 中的 javascript 文件时,它会向服务器发送请求并导致错误