我是NodeJS和Express的新手(一般来说是编码)。我正在尝试将数据呈现到EJS视图页面,以便我可以在前端操作它。它看起来像这样:
app.set('view engine','ejs');
var str = JSON.parse('[{"name":"bill", "age":"26"}, {"name":"jeff", "age":"32"}]');
str.forEach(function(data){
console.log(data.name);
});
app.get('/data', function(req, res){
res.render('data', {str:str});
});
我尝试在EJS文件中通过键入<%= data %>
在浏览器中获得的输出是[object Object],[object Object]来测试它。我觉得我错过了一些。有人可以帮帮我吗?
由于
编辑: 谢谢Booligoosh。只是想补充一点,我之后必须将其转换回EJS中的JSON才能使其正常工作。 :)
答案 0 :(得分:1)
您正在尝试打印包含两个对象的数组到ejs模板。在模板中,您只能打印字符串。
要将对象打印到模板,我们首先需要字符串化:
<%= JSON.stringify(str) %>
要访问数组中对象的属性,我们引用数组索引和属性键:
<%= str[0].name %>
要对数组迭代并打印出我们使用 forEach 的所有值:
<ul>
<% str.forEach(function(o) { %>
<li><%= o.name %> - <%= o.age %></li>
<% }); %>
</ul>
答案 1 :(得分:0)
在 ejs
模板中,我们可以渲染 json 对象如下:
<%- JSON.stringify(user) %>
我尝试使用 <%= JSON.stringify(user) %>
(<%=
) 但它会打印双引号的 asci 代码值。
答案 2 :(得分:-1)
试试这个:
JSON.stringify
在使用.toString
将JSON对象传递回模板之前,您需要将其转换回字符串,否则只会使用[object Object],[object Object]
呈现,返回"3\n"
。< / p>