Javascript Node.js、Express、MongoDB堆栈:希望响应保持在同一页面上吗

Javascript Node.js、Express、MongoDB堆栈:希望响应保持在同一页面上吗,javascript,node.js,express,response,Javascript,Node.js,Express,Response,我已经使用Node和Express编写了一个单页应用程序。此页面有几个部分,每个部分上都有一个表单。我将每个表单中的数据发布到Mongo,但希望找到一个保持在同一页面上且不刷新页面的响应。这是我的路由器代码: /* POST data to visitorSessionsTest collection */ router.post('/datasubmit', function(req, res) { // Set internal DB variables var db =

我已经使用Node和Express编写了一个单页应用程序。此页面有几个部分,每个部分上都有一个表单。我将每个表单中的数据发布到Mongo,但希望找到一个保持在同一页面上且不刷新页面的响应。这是我的路由器代码:

/* POST data to visitorSessionsTest collection */

router.post('/datasubmit', function(req, res) {

    // Set internal DB variables
    var db = req.db;

    // Get form values.
    var questionId = req.body.questionId;
    var visitorData = req.body.visitorData;

    // Set collection
    var collection = db.get('visitorSessionsTest');

    // Submit to the DB
    collection.insert({
        "questionId" : questionId,
        "visitorData" : visitorData
    }, function (err, doc) {
        if (err) {
            // If it failed, return error
            res.send("There was a problem adding the information to the database.");
        } 
        else {
            // what can go here?

        );
        }
    });
}); 
更好的做法是让响应将innerHTML写入该页面上相应部分中的div,以反映数据已收集

更新客户端代码以Jade开头,但相关部分包含一系列带有输入的表单,如下所示:

<form id="data-submit" name="datasubmit" method="post" action="/datasubmit">
<button name="visitorData" value="16" type="submit" onclick="showMessage(0)">16</button>
....

16
....

听起来您有点想了解RESTful API;对于这类事情,有很多非节点特定的常用方法

这就是说,我在您的位置上要做的是发送201(“创建”)响应,以及创建的对象的副本,包括以后导航到该对象所需的任何内容(例如,如果GET routes基于对象ID,则为ID)


它重定向的原因是按钮上的
type=“submit”
。如果您删除该选项并仅通过ajax express提交表单,则不会转到下一页

,您可能需要使用ajax。调用post/get-through ajax。收到响应后,利用jquery用响应更新div
res.status(201).send({id:doc._id, whatever:else, you:want});