2013-09-21 11 views
5

Chcę zaimplementować funkcję wyszukiwania na mojej stronie, więc to, co robię, to wywołanie ajax jquery z tekstem na serwer ekspresowy, który przeszukuje mongodb i daje tablica obiektów pasujących użytkowników. Teraz otrzymuję ten obiekt pomyślnie, ale ponieważ nie ma elementów na ejście, jak mogę odświeżyć listę wyników generującą HTML dla każdego użytkownika?Jak generować zawartość na ejście z jquery po wywołaniu ajaxa na serwer ekspresowy

Odpowiedz

9

Węzły Pakiety EJS zawierają bibliotekę JavaScript po stronie klienta, która znajduje się w ./node_modules/ejs/ejs.js lub ./node_modules/ejs/ejs.min.js. Po uwzględnieniu tego na swojej stronie, będziesz chciał wczytać szablon, a następnie wygenerować kod HTML z szablonu. Detecting an undefined object property Javascript próbek (załadowaniu szablonu na stronie obciążenia byłby nieco bardziej idealny):

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 wywołanie w ekspresowym:

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

można umieścić funkcja 'getData' wewnątrz samego szablonu lub będziesz musiał utworzyć zewnętrzny plik' script' zawierający funkcję, którą następnie wstrzykniesz do swojej strony? – AllJs

+0

@AllJs, O ile wiem, możesz umieścić go w skrypcie, jednak myślę, że byłoby lepiej zorganizowane, gdybyś miał zewnętrzny plik skryptu. – matth

Powiązane problemy