如何处理来自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
来检索你以前提交的整个表单。