我正在使用中间件body-parser
对表单值进行编码,以获取req.body对象。但是,当我调试代码时,发现req.body是未定义的。这是我的代码
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
听发布请求
app.post('/newCategory', function (req,res) {
//express attached the form encoded values into body
var categoryName = req.body.categoryName;
});
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>
只是遇到了同样的问题。看来我通过将代码移动到urlencoded行之后的映射路线来解决了我的问题。我现在在帖子中看到req.body。
app.use(bodyParser.urlencoded({ extended: true }));
// Map routes
var controllers = require("./controllers");
controllers.init(app);
这为我解决了问题
var bodyParser = require('body-parser');
var app=express();
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
希望此帮助
我注意到订单非常重要。通常,应该在启动服务器之前在最后声明路由器。例如:1.i导入所需文件
var express = require("express");
var bodyParser = require("body-parser");
var morgan = require("morgan");
var db = require("./db.js");
var app = express();
2.i声明其他内容
app.set("port", process.env.PORT || 3000);
//app.use(express.static(__dirname + '/public'));
app.use(morgan('dev') ); // Log every request to console
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
3。在包含路线之后-最重要的步骤
var routes = require('./routes/routes');
routes(app); //routes shall use Express
启动服务器
app.listen(app.get(“ port”),function(){console.log(“ Express服务器监听端口” + app.get(“ port”));});
然后可以正常工作..我不确定为什么,但是在发生了几次之后,我学习了这堂课。
如果您使用以{ extended:false }
进行urlencoded,则req.body
将以categoryName=test
的形式返回未解析的原始字符串。含义req.body.categoryName
将不确定。
尝试传递true,以便它可以使用qs模块解析表单数据。
app.use(bodyParser.urlencoded({
extended: true
}));
由于body-parser模块用于解析正文和URL,因此应在对“ req.body ...”的任何调用之前调用它。
var bodyParser = require("body-parser");
///////req.body is undefined here
//extended: false means you are parsing strings only (not parsing images/videos..etc)
app.use(bodyParser.urlencoded({extended: false});
///////you req.body is working here (module below is using req.body)
app.use("/", module);
app.post('/newCategory', function (req,res) {
var categoryName = req.body.categoryName;
});
我正在使用此: