我使用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>
....
答案 0 :(得分:1)
听起来你想要读一下RESTful API了;这种事情有很多常见的方法,不是特定于节点的。
那就是说,我在你的位置做的是发送201(“创建”)响应,以及创建的对象的副本,包括稍后导航到它所需的任何内容(例如,如果您的GET,则为ID)路由基于对象ID)。
res.status(201).send({id:doc._id, whatever:else, you:want});
答案 1 :(得分:0)
重定向的原因是因为按钮上有type="submit"
。如果你删除它并仅通过ajax express提交表单将不会路由到下一页