【发布时间】:2015-08-17 00:59:19
【问题描述】:
我正在使用带有 Express 和 Handlebars 的 Node.JS。我在更新特定 div 以及发送数据时遇到了麻烦。
我会先从10'级别问问题,因为可能没有必要回答细节。当我使用href='blah' 并设置一个 jquery 函数时,Express 会做正确的事情,只是更新 div 而不更新整个页面。
但是,当我在 <form method="post" .... 上使用相同的代码时,它反而会丢弃我的布局,不会转到 jquery 调用,而是会渲染我通过 Express 路由到的整个车把页面。
为什么这些不同,我应该怎么做?
如果不清楚,那么这里是代码:
在我的视图目录中,我有:index.handlebars、view1.handlebars、temp.handlebars。
在 view1.handlebars 里面,我有一个form:
<form method="post" action="/update_this" enctype="multipart/form-data" data-id="{{data.uniqueId}}">
还有一个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});
};
这会渲染整个页面,甚至会丢失 layout.handlebars 文件。
如前所述,如果我有一个带有href=... 的按钮,那么布局会保持不变,并且一切都会完美呈现。但是关于我正在执行post 请求而不是get 的事实会导致问题。
【问题讨论】:
-
因为
{layout: false}而丢失了布局 -
{layout: false}表示不更新布局。这并不意味着关闭它。当您只更新布局的一部分时使用该设置。
标签: jquery node.js express handlebars.js