node.js ejs 重新渲染 div 晚上 ajax

node.js ejs rerender div afte ajax

我的问题是在 ajax 调用成功后更新 div 块。 所以我这样做:

我的div:

<div class="lists">
                <% for(var i=0; i<searchItem.length; i++) {%>
                <a class="list-link" href="#"><div class="list"><%= searchItem[i] %></div></a>
                <% } %>
            </div>

我的jqueryajax电话:

 $.ajax({
                    url: '/search?val=' + encodeURIComponent($('#search-input').val()),
                    success: function(data) {
                        console.log('DATA-' + data);
                        new EJS({url:' /views/dropdown.ejs'}).update('lists',data)
                    }
                });

我的项目结构:

但是我遇到了 404 错误,因为 ejs 看不到 dropdown.ejs 模板(http://localhost:3000/views/dropdown.ejs 未找到)。为什么?

另一个问题是我需要在我的 div 块的 .update('lists',data) , Id 或 class 中写入什么类型的选择器?

我假设您正在使用 Express 并且 views/dropdown.ejs 是您的 express 后端中的一个视图。

如果我的假设是正确的,你不能直接访问你的后端视图。您必须为此视图创建一个路由器,或者您可以将此模板放在您的静态文件夹中。

router.get('/template/:templateName', function(req, res){
    res.render(req.params.templateName, { title: 'Template' });
});

// Or put your template inside public folder

app.use(express.static(path.join(__dirname, 'public')));

至于你关于 select 或你的 DOM.It 的第二个问题取决于你想要实现的目标。使用 class selector 将获得所有具有 class 名称的 DOM,如果给你一个 DOM 的数组,至于 ID(需要在某个页面上是唯一的)它将 select 单个 DOM.

查看您的示例,我认为您需要使用 ID 和目标 DOM 来更新内容。