使用Express node.js的post表单接收req.body为空。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Express node.js的post表单接收req.body为空。相关的知识,希望对你有一定的参考价值。
我有一个简单的表单,通过Express向我的Node.JS服务器发送POST数据。这就是表单。
<form method="post" action="/sendmessage">
<div class="ui-widget">
<input type="text" id="search" data-provide="typeahead" placeholder="Search..." />
</div>
<textarea id="message"></textarea>
</form>
ui-widget和输入的数据是通过 typehead
这是我在服务器上处理POST请求的方式。
app.post('/sendmessage', function (req, res){
console.log(req.body);
usermodel.findOne({ user: req.session.user }, function (err, auser){
if (err) throw err;
usermodel.findOne({ user: req.body.search }, function (err, user){
if (err) throw err;
var message = new messagemodel({
fromuser: auser._id,
touser: user._id,
message: req.body.message,
status: false
});
message.save(function (err){
if (err) throw err;
res.redirect('/messages')
})
});
});
});
控制台显示'{}',然后出现一个错误,即 req.body.search
因为 search
是没有定义的。我不知道这里发生了什么,这不是一个与 typehead
输入。有什么办法解决这个问题...?
先谢谢你
req.body
是由名字和值组成的
添加 name="search"
在你的搜索框上再试一次。
你还必须使用 expressconnect.bodyParser() 中间件,谢谢 Nick Mitchinson!
我遇到了这个问题,原来我使用的是 app.use(express.bodyParser());
但它是在我使用的代码之后。把它移上去就解决了这个问题。
在 特快4 会是这个。(注意,这不会解析多文件上传)。
app.use(bodyParser.urlencoded({extended: true}));
如果你想接收json输入
app.use(bodyParser.json());
在我的情况下,它是由我的应用程序重定向引起的。http
到 https
.更新Facebook,使用 https
uri修复了它。
在我的例子中,我没有提供像这样的名称标签。name="firstname"
在我 input
领域。添加它们后,一切正常。
以上是关于使用Express node.js的post表单接收req.body为空。的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Express 和 Node.js 从表单发送参数
Node.js 和 Express 排除路由表单 JWT 中间件