如何在EJS中将JSON对象传递给内联javascript

如何在EJS中将JSON对象传递给内联javascript,javascript,json,ejs,Javascript,Json,Ejs,我只想将EJS对象发送到javascript函数。我尝试了下面的代码,但没有成功 <% books.forEach(function(book){ %> <button onclick="getBookDetails(<%=book %>);" > <%=book.name %></button> <% }); %> 我也尝试过以下内容,但没有效果。getBookDetails() 请帮我找出错误。您不能调用g

我只想将EJS对象发送到javascript函数。我尝试了下面的代码,但没有成功

<% books.forEach(function(book){ %>
    <button onclick="getBookDetails(<%=book %>);" > <%=book.name %></button>
  <% }); %>
我也尝试过以下内容,但没有效果。
getBookDetails()


请帮我找出错误。

您不能调用
getBookDetails()
,因为
将被评估为
[对象对象]
,而不是
{name:“柳树中的风,作者:”Kenneth Grahame“}


使用
JSON是正确的。stringify
但是忽略了一个关键点:使用
您应该用单引号将您的ejs“stringized”值括起来,如下所示

<% books.forEach(function(book){ %>
    <button onclick="getBookDetails('<%= JSON.stringify(book) %>')"><%= book.name %></button>
<% }) %>

您应该删除
JSON.parse().console.log(bookString)

它对我有用。

您应该用引号括起来:
onclick=“getBookDetails('
<% books.forEach(function(book){ %>
    <button onclick="getBookDetails(<%-JSON.stringify(book)%>);"><%=book.name %></button>
<% }); %>
<% books.forEach(function(book){ %>
    <button onclick="getBookDetails('<%= JSON.stringify(book) %>')"><%= book.name %></button>
<% }) %>
function getBookDetails(bookString){
   let book = JSON.parse(bookString)
   // now you can use the book object
}