2016-11-09 3 views
0

Grundsätzlich versuche ich einen Fragebogen in Express JS mit EJS als Renderer zusammenzustellen. Ich habe die Seiten ausgefüllt, eine für jede Frage. Die Seiten können mit statischen Links mit dem app.get aufgerufen werden ('/ question /: number?', Routes.questions); Funktion. Der Teil, der mich verwirrt, ist, wie kann ich auch einen POST mit den gleichen Routen durchführen. Wenn sie Frage 1 ausfüllen, möchte ich die Antwort an einem temporären Ort (Variable) veröffentlichen und auch die nächste Frage laden. Es gibt insgesamt 4 Fragen. Wenn sie die 4. Frage abschließen, ist eine andere Submit-Schaltfläche auf der HTML-Seite ... Diese Schaltfläche sollte alle 4 Antworten enthalten und sie in einer JSON-Datei lokal auf dem Dateisystem speichern.ExpressJS GET und POST auf derselben Route

Ich hoffe, jemand könnte ein schnelles Beispiel dafür mit generischen Code zusammen, um mir einen Hinweis, wie Sie diese zu vervollständigen. Sobald ich einen funktioniere, denke ich, dass die Gesamtfunktionalität für mich viel klarer sein sollte. Vielen Dank!

Antwort

2

Alles, was Sie tun müssen, ist dies so etwas wie hinzufügen:

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

Alles funktioniert gut, außer für einen seltsamen Schluckauf. Das 'qid + 1' gibt tatsächlich 11 statt 2 zurück, wenn ich auf Frage 1 bin. Ich versuche herauszufinden, warum es das tun würde, da die Syntax logisch erscheint. –

+0

Rechts; Parameter sind alle Zeichenfolgen. Versuchen Sie 'var qid = Number (req.params.number);' –