传递表单数据在Express / Node.js中不起作用

对不起,如果这是一个补救的问题,或者一个明显的错误,但这是我的第一个节点项目。

Essencailly我需要做的是获取一行文本,用户将input到前端的forms。 不幸的是,不pipe我做了什么结果日志“未定义”。 我不知所措 我将发布下面的完整代码,但给我麻烦的部分是:

app.get('/test', function(req, res){ res.render('test'); }); app.post('/test',function(req,res){ console.log(req.body); }); 

“/testing”路线只是临时testing得到的forms反应(如果由于某种原因,不明显)。

我的完整HTML文件如下所示:

 <!DOCTYPE HTML> <head></head> <body> <form id="myform" action="/test" method="post" enctype="application/x-www-form-urlencoded"> <input type="text" name="name" id="mytext" /> <input type="submit" id="mysubmit" /> </form> </body> 

任何想法/帮助将不胜感激。

这里是完整的app.js文件

 var app = require('express')(); var http = require('http').Server(app); var exphbs = require('express-handlebars'); var twitter = require('./twitter.js'); var hue = require("./hue_control.js"); //Variable that control Twitter Calls var api = 'statuses/filter'; var params = {slug:'test', owner_screen_name: 'REDACTED', skip_status: true}; var values = {}; app.engine('handlebars', exphbs({defaultLayout: 'main'})); app.set('view engine', 'handlebars'); hue.activate(); twitter.tweetStream(api, params, values); app.get('/test', function(req, res){ res.render('test'); }); app.post('/test',function(req,res){ console.log(req.body); //you will get your data in this as object. console.log(req.is('json')); }); app.get('/', function(req, res){ res.render('tweets'); }); app.get('/tweets', function(req, res){ res.render('home', { profileImg: values.profileImg, userName: values.userName, screenName: values.screenName, text: values.text, timeStamp: values.timeStamp, tweetScore: values.tweetScore }); }); //app.get('/tweets', function(req, res) http.listen(3000, function(){ console.log('listening on *:3000'); }); 

我认为你在快速应用程序中缺lessbodyParser中间件,这就是为什么req.body是未定义的。

如果您使用Express 3.x,只需使用以下行。 BodyParser曾经与Express 4.0之前的版本捆绑在一起

 app.use(express.bodyParser()); 

如果您使用的是Express 4.x,则需要明确要求body-parser模块

 var bodyParser = require('body-parser'); 

然后在你的应用程序中使用它

 app.use(bodyParser()); 

其余的代码似乎很好。

你需要使用body-parser 。

粗略地说,这是你所需要的:

 var app = require('express')(); var http = require('http').Server(app); ... var bodyParser = require('body-parser') app.use(bodyParser.urlencoded({ extended: false })); ...