node.js ejs rerender div afte ajax

时间:2015-06-25 23:11:24

标签: javascript jquery ajax node.js ejs

我的问题是在成功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>

我的jquery ajax电话:

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

我的项目结构:

enter image description here

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

另一个问题我需要在.update(&#39;列出&#39;,数据),我的div块的Id或类中写入哪种类型的选择器?

1 个答案:

答案 0 :(得分:1)

我假设您正在使用Express和views / dropdown.ejs是您快速后端的视图。

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

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')));

至于关于DOM选择器的第二个问题。这取决于你想要实现的目标。使用类选择器将获得具有该类名的所有DOM,如果为您提供DOM数组,则对于ID(在某个页面上需要是唯一的),它将选择单个DOM。

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