2016-05-19 11 views
0

Ich versuche, JSON-Daten anzuzeigen, aber ich habe diesen Fehler. Kann mir bitte jemand helfen?Wie kann ich JSON-Daten in meine EJS-Vorlage bekommen?

Fehler -> Unerwarteter Token; in „/home/ubuntu/workspace/project_guest_book/views/pages/posts.ej

Der Code-Fehler, verursacht unter:

<% var post = require(__dirname +"/userPosts.json") 
     var result= %> 
      <table> 
      <% for (var i=0; i<post.length; i++){ 
       result += %> 
       <tr> 
        <th><% post[i].Name+ %></th> 
        <td><% post[i].Post %></td> 
       </tr> 
      <% } %> 
      <table> 
+1

Sie können nicht ausgegeben HTML * in * eine Variable wie das, was Sie am Ende mit 'var result =' ohne einen gegebenen Wert, der ein Syntaxfehler ist. – adeneo

+0

Aber auch wenn ich einen Wert eingebe habe ich immer noch den gleichen Fehler! – Learner

Antwort

1

EJS erwartet wird, nicht so, wie Sie verwendet werden versuchen, es zu benutzen.

Denken Sie an die ejs Vorlage als Markup mit JavaScript eingebettet sind, die auf eine Funktion erstellt, die mit den erforderlichen Daten zur Verfügung gestellt werden kann und das gibt Ihnen die endgültige hTML zurück.

Sie müssen sich also keine Gedanken darüber machen, das Zwischen-Markup in Variablen oder Verkettungen von HTML-Fragmenten zu speichern.

Kasse die Umsetzung in diesem fiddle:

<script id="template" type="text/html"> 
    <table> 
    <% for (var i=0; i< posts.length; i++){ %> 
     <tr> 
     <th><%= posts[i].Name %></th> 
     <td><%= posts[i].Post %></td> 
     </tr> 
    <% } %> 
    <table> 
</script> 

-

// This can be loaded from an external file: 
var posts = [{ 
    Name: "Post1", Post: "Lorem ipsum dolor sit amet" 
}, { 
    Name: "Post2", Post: "Lorem ipsum consecteuter adpiscing elit" 
}] 

var compiledTemplate = ejs.compile(document.getElementById('template').innerText) 

console.log(compiledTemplate({ posts: posts })) 
+0

Danke, für eine klare Antwort mit Codes. Es ist jetzt leicht zu verstehen, was ich falsch gemacht habe. – Learner

Verwandte Themen