2013-09-21 26 views
5

Ich möchte eine Sucheigenschaft auf meiner Web site implementieren, also mache ich einen jquery Ajaxanruf mit dem Text zum Eilbediener, der mongodb sucht und ein gibt Objekt-Array der übereinstimmenden Benutzer. Jetzt erhalte ich dieses Objekt erfolgreich, aber da es keine Partials auf ejs gibt, wie kann ich nur die Ergebnisliste aktualisieren, die HTML für jeden Benutzer generiert?Wie man Inhalt auf ejs mit jquery nach Ajaxaufruf erzeugt, um Server auszudrücken

Antwort

9

Die Knoten-EJS-Pakete werden mit einer clientseitigen JavaScript-Bibliothek geliefert, die sich in ./node_modules/ejs/ejs.js oder ./node_modules/ejs/ejs.min.js befindet. Nachdem Sie dies auf Ihrer Seite eingefügt haben, möchten Sie die Vorlage laden und anschließend den HTML-Code aus der Vorlage generieren. Detecting an undefined object property Javascript Probe (Laden der Vorlage auf Seite Last wäre ein bisschen mehr ideal sein):

function getData() { 
    // Grab the template 
    $.get('/results.ejs', function (template) { 
     // Compile the EJS template. 
     var func = ejs.compile(template); 

     // Grab the data 
     $.get('/data', function (data) { 
      // Generate the html from the given data. 
      var html = func(data); 
      $('#divResults').html(html); 
     }); 
    }); 
} 

EJS:

<table> 
    <tr> 
     <th>ID</th> 
     <th>Name</th> 
    </tr> 
    <% data.forEach(function (d) { %> 
    <tr> 
     <td><%- d.id %></td> 
     <td><%- d.name %></td> 
    </tr> 
    <% }); %> 
</table> 

Ajax-Aufruf in Express:

app.get('/data', function (req, res) { 
    res.send({ data: [ 
     { id: 5, name: 'Bill' }, 
     { id: 1, name: 'Bob' } 
    ]}); 
}); 
+0

Können Sie Platz die 'getData'-Funktion innerhalb der Vorlage selbst oder Sie müssen eine externe' Skript'-Datei erstellen, die die Funktion enthält, die Sie dann in Ihre Seite injizieren? – AllJs

+0

@AllJs, Soweit ich weiß, können Sie es in das Skript einfügen, aber ich denke, es wäre besser organisiert, wenn Sie eine externe Skriptdatei hätten. – matth

Verwandte Themen