2016-11-09 72 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);' –