Nodejs- Req.body在使用express 4.x的帖子中未定义

Amm*_*han 10 node.js express

我正在使用中间件body-parser对表单值进行编码以获取req.body对象.但是当我调试我的代码时,发现req.body是未定义的.这是我的代码

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
Run Code Online (Sandbox Code Playgroud)

收听发帖请求

app.post('/newCategory', function (req,res) {

            //express attached the form encoded values into body
            var categoryName = req.body.categoryName;
        });
Run Code Online (Sandbox Code Playgroud)

Html表格

<form action="/newCategory" role="form" method="post" class="form-inline">
    <input type="text" name="categoryName" placeholder="Category name" class="form-control" />
    <input type="submit" value="New Category" class="btn btn-primary" />
</form>
Run Code Online (Sandbox Code Playgroud)

小智 12

刚遇到同样的问题.看起来我通过将代码移动到urlencoded行之后映射路由来解决我的问题.我现在在帖子中看到了req.body.

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


// Map routes
var controllers = require("./controllers");
controllers.init(app);
Run Code Online (Sandbox Code Playgroud)


ack*_*ser 7

这解决了我的问题

var bodyParser = require('body-parser');
var app=express();
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
Run Code Online (Sandbox Code Playgroud)

希望这有帮助


Ben*_*une 2

如果您使用 urlencoded with { extended:false }req.body将从表单中返回未解析的原始字符串categoryName=test。意义req.body.categoryName将是不确定的。

尝试传递 true,以便它可以使用 qs 模块解析表单数据。

app.use(bodyParser.urlencoded({
    extended: true
}));
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了两者,但我得到了 req.body 未定义。任何想法? (2认同)