Node.js,express,html表单req.body是未定义的

我不明白为什么req.body是未定义的。 它总是访问node.js server'/ formstuff'中的函数,但是req.body是未定义的。

当我看看它发布到cmd的结果,我没有看到我的查询任何地方。 其实res.query和res.params是空的。

任何帮助将不胜感激,谢谢。

performance:

var express = require('express'), app = express(); var fs = require('fs'); var Promise = require('promise'); // Handle Get Request app.get('/', function(req, res){ // get stuff from request var index; fs.readFile('./form.html', function (err, data) { if (err) { throw err; } index = data; res.setHeader("Content-Type", "text/html"); res.send(index); }); }); app.post('/formstuff', function(req, res){ console.log(req.body); res.send(); }); 

HTML:

 <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <style type = "text/css"> body { margin:0; } #head { width:100%; color:#FAFAFA; height:170px; text-shadow: 2px 2px 0px rgba(150, 150, 150, 1); background: #39d800; /* Old browsers */ background: -moz-linear-gradient(top, #39d800 0%, #00a008 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#39d800), color-stop(100%,#00a008)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #39d800 0%,#00a008 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #39d800 0%,#00a008 100%); /* Opera 11.10+ */ background: -ms-linear-gradient(top, #39d800 0%,#00a008 100%); /* IE10+ */ background: linear-gradient(to bottom, #39d800 0%,#00a008 100%); /* W3C */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#39d800', endColorstr='#00a008',GradientType=0 ); /* IE6-9 */ font-family: Brush Script MT; font-weight:bold; font-size:8.5em; text-align:center; } form div { padding:0.8%; } fieldset { font-size: 2em; position:relative; } input { width: 150px; height: 50px; font-size: 1.2em; clear:both; } </style> </head> <body> <div id = "head">Notifye</div><br> <br> <fieldset> <legend>Search</legend> <form name = "form" method = "post" action = "http://127.0.0.1:3000/formstuff"> <input type="text" required = "required" name = "tag" placeholder = "lolcats"> <div><input type = "submit" name = "submit" value = "Submit" id = "sub"></div> </form> </fieldset> </body> 

您缺less身体分析中间件。

如果你没有上传文件,你可以使用npm install body-parser ,然后添加app.use(require('body-parser').urlencoded()); 在你的任何路线之前。

你需要更多的软件包。 我build议:

 var connect =require('connect'); // var multer =require('multer'); // This is used when multipart/form-data are required app.use(connect.json()); // for json app.use(connect.urlencoded()); // for application/x-www-form-urlencoded app.use(multer({ dest: './uploads/'}));// for multipart/form-data 

这是比这里解释的不安全的body-parser更可取的。 请参阅连接文档和multer文档