2013-09-21 68 views
3

我在查找如何在jquery ajax調用後在ejs上創建DOM的一部分時遇到問題。該功能是一個非常實用的實時搜索,它將請求發送到服務器,它搜索數據庫並根據搜索返回包含用戶列表的變量。問題從那裏開始,因爲EJS不再允許partials,在javascript上嵌入javascript的方式在jquery上不起作用,或者至少我不知道如何。我的思想被困住了,所以任何幫助都不勝感激。如何在ajax調用expressjs後使用jquery渲染ejs模板的一部分

這是Ajax調用

$.ajax({ 
    url: 'http://localhost:3000/contactsearch', 
    type: 'post', 
    dataType: 'text', 
    data: { searchquery: searchquery} 
}) 
.done(function(res){ 
    var persons = res; 
}) 

頁由快遞這樣呈現:

exports.search = function(req, res){ 
res.render('./contacts/search', { title: 'Contact search', persons: persons }); 
}; 

請求返回一個更新的人變量,我需要生成聯繫人列表中的HTML 。我嘗試了很多方法,但無法實現它。頁面最初呈現的方式就是這樣,所以我不知道如何刷新基於更新的個人變量的列表。

HTML是這樣的:

<% if (persons.length) { %> 
    <% persons.forEach(function(person) { %> 
    <div class='contactlistusername'><%= person.username %></div> 
    <% })}%> 
+0

是**人**是一個數組對象? – ram

回答

1

嘗試處理在不同的模板中的每個AJAX更新成功的結果來呈現:(在JS)

var renderedData = new EJS({url:'/template/rendering.template'}).render({data:persons}); 
$('.contact').html(renderedData); 

如果人是從returmed一個數組對象的AJAX響應,在不同的模板文件中處理:(在模板中)

<% if (persons.length) { %> 
<% for(var i in persons) { %> 
<div class='contactlistusername'><%= persons[i].username %></div> 
<% }} %> 
+2

人是一個數組對象,嵌入式js在初始加載時工作正常。問題是當jquery進行ajax調用並獲取更新的persons數組對象時,如何觸發以僅加載您編寫的代碼。如果我把你寫在ajax成功回調上的東西仍然沒有任何反應...... – anges244