提交表单时,jquery没有正确更新把手部分视图(express,node.js)

时间:2015-06-03 01:55:16

标签: jquery node.js express handlebars.js

我使用带有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这一事实导致了这个问题。

1 个答案:

答案 0 :(得分:0)

jquery可以使用$(<someElement>).load将html直接加载到元素中。以下是文档:http://api.jquery.com/load/基本上,通过指向来自发送html的节点服务器的路由,.load将使用响应替换当前的html。