当使用nodejs express中的表单数据发布时,req.body返回空对象

时间:2016-01-20 17:26:32

标签: node.js forms post express

我正在使用简单的文本输入对'/'发送请求,并期望看到在req.body.course中输入的数据。当控制台记录req.body.course时,我得到一个空对象。

HTML

<html>
    <head><title>New Course</title></head>
    <body>
      <form id="myform" action="/" method="post">
        <input type="text" name="course" id="mytext" />
        <input type="submit" id="mysubmit" />
      </form>
    </body>
</html>

服务器

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

var app = express()
app.use(bodyParser.json())

app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

app.post('/', function (req, res) {
    var course = req.body.course; 
    res.send(course);
});

app.get('/', function (req, res) {
    res.render('index');
});

app.listen(4000, function() {
    console.log("Server is listening on port", 4000);
});

REQ.BODY的输出

{}

3 个答案:

答案 0 :(得分:1)

尝试

app.use(bodyParser.urlencoded())

答案 1 :(得分:1)

你必须告诉标题你的请求的MIME类型是什么 只需添加请求。

 Content-Type='application/json'

答案 2 :(得分:0)

尝试添加使用Urlencoded的中间件。

app.use(bodyParser.urlencoded())

app.use(bodyParser.urlencoded({
   extended: true
}))

由于您的请求格式为urlencoded,因此它将解析URL编码的正文。

您可以参考bodyparser urlencoded文档。