2016-11-09 63 views
0

基本上我试图把一个调查问卷放在Express JS与EJS作为渲染器。我填充了页面,每个问题一个。这些页面可以通过使用app.get('/ question /:number?',routes.questions)的静态链接来访问。功能。我感到困惑的部分是我怎样才能使用相同的路线执行POST。当他们完成问题1时,我想在临时位置(变量)中发布答案,并加载下一个问题。共有4个问题。当他们完成第四个问题时,html页面上会有一个不同的提交按钮...此按钮应该全部4个答案,并将其保存在文件系统的本地json文件中。ExpressJS GET和POST在相同的路线

我希望有人可以放在一起使用通用代码给我一个关于如何完成这些提示的快速示例。一旦我开始工作,我认为整体功能应该更清晰。谢谢!

回答

2

所有你需要做的就是添加这样的:

app.post('/question/:number', function(req, res) { 
    var qid = Number(req.params.number); 
    var answer = req.body.answer; // <input name="answer" .../> 
    // store answer 
    answers[qid] = answer; 
    // load next question 
    if (qid < 4) res.redirect('/question/' + (qid + 1)); 
    else res.redirect('/results'); 
}); 
+0

一切正常,除了一个奇怪的打嗝罚款。当我在问题1中时,'qid + 1'实际上是返回11而不是2。我试图找出它为什么会这样做,因为语法看起来合乎逻辑。 –

+0

正确; params都是字符串。尝试'var qid = Number(req.params.number);' –

相关问题