req.body undefined使用post方法

时间:2017-01-06 09:20:04

标签: node.js express body-parser

login.html(我已将其转换为jade)是我的登录页面,该页面在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>

1 个答案:

答案 0 :(得分:2)

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

  

由于它们复杂而且不能处理多部分主体   通常是大自然。对于多部分机构,您可能感兴趣   以下模块:

     busboy和connect-busboy multiparty和connect-multiparty强大   multer

因此,您必须将enctype =“multipart / form-data”更改为例如enctype =“application / json”或使用其他模块。

希望我帮助过你。