如何在 expressjs 上调用 ajax 后使用 jquery 渲染部分 ejs 模板



在jquery ajax调用后,我无法找到如何在ejs上创建部分DOM。该功能是一个实时搜索,效果很好,它将请求发送到服务器,它搜索数据库并返回一个变量,其中包含基于搜索的用户列表。问题从那里开始,因为EJS不再允许部分,并且在html上嵌入javascript的方法在jquery上不起作用,或者至少我不知道如何。我的思想被卡住了,所以任何帮助都非常感谢。

这是 Ajax 调用

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

该页面由 Express 呈现如下:

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>
    <% })}%>

尝试处理每个 AJAX 更新的成功结果都会呈现不同的模板:(以 js 为单位)

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

如果 person 是从 AJAX 响应中重新生成的数组对象,则在不同的模板文件中处理:(在模板中)

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

最新更新