如何处理来自app.js的Express 4 / nodejs中的get / post从窗体传递数据到显示结果的新页面

我相信这是一个非常容易的问题,但我想我现在有一个心理障碍来回答它。

我已经安装node.js和expression4,我可以运行静态页面没有任何问题。 我想要做的是创build一个表单来捕获一些数据,然后在结果页面中显示我在表单中捕获的数据。 我正在使用Jade来处理HTML部分。

在app.js文件中,这些是我改变的唯一的东西:

..

var routes = require('./routes/index'); var users = require('./routes/users'); // new routes var helloworld = require('./routes/helloworld'); var sampleform = require('./routes/sampleform'); 

 app.use('/', routes); app.use('/users', users); // new pages app.get('/helloworld', helloworld); app.get('/sampleform', sampleform); 

我有一个简单的sampleform.jade文件:

 html head title Sample Form body h2 Sample Form form(name='sampleform' action='/sampleform' method='post') table(border='0') tr td Name td input(name='name' type='text' size='30') tr td Email td input(name='email' type='text' size='30') tr td input(type='submit', name='submit', value='Submit') 

我能够使用下面的sampleform.js加载表单没有问题:

 var express = require('express'); var router = express.Router(); /* GET sample form page. */ router.get('/sampleform', function(req, res) { res.render('sampleform'); }); router.post('/showresults', function(req, res) { res.render('showresults') }); module.exports = router; 

showresults.jade目前只有静态内容(我没有showresuls.js,因为这个页面只从sampleform.js调用):

 html head title Show Results body h2 Show Results 

我需要的是,在sampleform中点击button提交之后,会显示一个名为showresults的新页面(它最终将从sampleform获取数据,但是现在我只需要加载该页面)。 上面的sampleform.js中的代码生成一个404错误,我知道它不起作用。 我能做些什么呢? 我在app.js代码中丢失了什么?

先谢谢您的帮助!

从我所能看到的,你在Jade文件中提交表单到GET路由而不是POST路由,在这里:

form(name='sampleform' action='/sampleform' method='post')

因此,不需要将表单提交发送到GET请求,您需要将其发送到POST 。 你已经在这里声明了一个POST路由:

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

所以,你应该只改变你的Jade文件中的表单指向/showresults因为它是一个POST路由,而不是GET /sampleform 。 从那里,你只需要调用req.body来检索你以前提交的整个表单。