【发布时间】:2015-07-06 17:12:36
【问题描述】:
已更新以展示如何使其工作。我在下面接受的答案并没有真正显示太多代码,一切都在 cmets 中结束。所以为了简单起见,我在这里展示了正确的代码(我的原始代码有 3 个错误)。
我正在使用带有 Express 和 Handlebars 的 Node.JS。我在更新特定 div 以及发送数据时遇到了麻烦。这是有效的。
在我的视图目录中,我有:index.handlebars、view1.handlebars、temp.handlebars。
在 view1.handlebars 里面,我有一个button:
<button type="button" id="btn-here" data-id="{{data.uniqueId}}"><a href="../update_this">Update This</a></button>
还有一个div:
<div id="sectional">
{{> partial}}
</div>
当有人点击button 时,我想更新部分div。所以我像这样使用jquery:
$('#btn-here').on('click', function(event) {
event.preventDefault();
var id_num = $(this).data('id'); //id_num is correct
$.get("/temp/" + id_num, function(res) {
var updated_html = res;
$('#sectional').html(updated_html);
});
});
我允许 jquery 通过以下方式找到 temp.handlebars 文件:
router.get('/temp/:id', view1.showstuff);
在 view1.showstuff 函数内部:
showstuff: function(req, res) {
res.locals.model = model;
res.render('temp/' + id, {layout: false});
};
现在这会发送视图数据并仅更新 jquery 调用中指定的视图。
感谢下方用户的帮助!
【问题讨论】:
-
如果您在浏览器中转到
http://yoursite.com/temp.html会发生什么?你只是得到temp.html的内容还是整个index.html的内容? -
好吧,因为我使用的是带有 express(和把手)的 Node.JS,所以我收到浏览器无法“GET /temp.html”的错误消息。我的 routes.js 文件中没有它作为路由。
-
当您请求
temp.html时,Chrome 开发工具的“网络”选项卡会返回什么内容?temp.html是您期望获得的实际文件吗?如果是这样,您将需要配置路由以允许您通过某个 URL 获取它。 -
好吧,我打印以控制台它“获取”的文件的内容,它是索引页面,而不是我的 temp.html 页面。我真的很困惑它是如何得到这个的。
-
这与您的路线配置方式有关。我建议您发布:1)您项目的基本文件结构,包括
temp.html的位置。 2)路由配置代码。 3)您尝试点击#btn-here按钮的页面的URL。
标签: jquery node.js express handlebars.js