NodeJs和Ejs将Arrays传递给页面

h00*_*00j 9 ejs node.js express locomotivejs

我试图将数组传递给.ejs页面,但是当我尝试使用时

var test ="<%= data %>";
console.log(test);
Run Code Online (Sandbox Code Playgroud)

我得到了输出

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object
Run Code Online (Sandbox Code Playgroud)

nodejs文件上的Console.log工作正常,但是当我尝试console.log客户端时,它会搞砸.

Jon*_*ski 33

问题很可能是<%= data %>,而不是console.log().如果您检查客户端的结果,您可能会看到:

var test ="[object Object],[object Object],[object Object],...";
Run Code Online (Sandbox Code Playgroud)

当你只是打印一个Array,这将只是.join()元素,呼吁.toString()每个.而且:

new Object().toString() === "[object Object]"
Run Code Online (Sandbox Code Playgroud)

要输出数据以便可以使用,您可以使用JSON.stringify():

var test = <%- JSON.stringify(data) %>;
Run Code Online (Sandbox Code Playgroud)

这利用了JSON的语法基于JavaScript的synax来输出Array文字的Object文字:

var test = [{"prop":"value"},...];
Run Code Online (Sandbox Code Playgroud)

  • 如果我不使用`<% - JSON.stringify()%>`而不是`<%= JSON.stringify()%>`,我无法正常工作. (8认同)