req.body使用post方法未定义

login.html(我已经转换为玉)是我的login页面在localhost:3000打开。 我发送表单详细信息到index.js(服务器)。

问题:在console.log(用户名)我得到的输出为undefined。 请帮忙。 我是否正确使用了body-parser?

var express= require('express'); var app = express(); var http = require('http').Server(app); var io = require('socket.io')(http); var bodyParser = require('body-parser'); app.use(express.static('./Public')); app.set('views', __dirname + '/tpl'); app.set('view engine', "jade"); app.engine('jade', require('jade').__express); app.get("/", function(req, res){ res.render("login"); }); app.use(bodyParser.urlencoded({ extended : false })); app.use(bodyParser.json()); app.post('/', function(req,res) { var username = req.body.name; console.log(username); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); 

html代码:(login.html)

 <html> <body> <form action="/" method="post" enctype="multipart/form-data"> <fieldset> <label for="name">Name:</label> <input type="text" id="name" name="name" placeholder="Enter your full name" /> <br /> <label for="email">Email:</label> <input type="email" id="email" name="email" placeholder="Enter your email address" /> <br /> <input type="submit" value="Create Profile" /> </fieldset> </form> <script> var socket = io.connect("http://loacalhost:3000"); </script> </body> </html> 

如果你看一下body-parser的文档,你可以注意到这一点:

这并不处理多部门机构,因为它们的复杂性和典型的大的性质。 对于多部分机构,您可能对以下模块感兴趣:

busboy和connect-busboy多方和连接multiparty强大的multer

所以你必须改变enctype =“multipart / form-data”为例如enctype =“application / json”或使用其他模块。

希望我帮你。