2016-07-06 1 views
1

Ich möchte nur EJS-Objekt an Javascript-Funktion senden. Ich habe unten Code versucht, aber es hat nicht funktioniert.Wie übergebe ich ein JSON-Objekt an Inline-Javascript In EJS

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

Mein JavaScript-Code ist

function getBookDetails(book){ 
    //using book object 
} 

ich folgende Sachen ausprobiert haben also.But es nicht helfen. getBookDetails(<%=JSON.stringify(book) %>);

Bitte helfen Sie mir, den Fehler zu finden.

Antwort

0

Sie können getBookDetails(<%=book%>) nicht aufrufen, da <%=book%> als [object Object] und nicht { name: "Wind in the willows, author: "Kenneth Grahame" } ausgewertet wird, wie Sie benötigen.

Sie sind auf der richtigen Linie mit der Verwendung von JSON.stringify, aber einen wichtigen Punkt verpasst: mit <%= wird HTML-Entities entkommen. Statt - wie <%- so verwenden:

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

Sie sind fein <%=book.name%> verwenden, da die Ausgabe sollte eine Zeichenfolge.

Verwandte Themen