[英]Receiving req.body empty with post form with Express node.js
我有一个简单的表单,它使用 Express 将 POST 数据发送到我的 Node.JS 服务器。 这是表格:
<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
相关,这是 Twitter 的一个自动完成库。 这就是我在服务器中处理 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"
并重试。
您还必须使用 express/connect.bodyParser() 中间件,谢谢 Nick Mitchinson!
我遇到了这个问题,结果我使用的是app.use(express.bodyParser());
但它是在我使用的代码之后。 向上移动它解决了这个问题。
在express 4 上就是这个。 (请注意,这不会解析多部分/上传)。
app.use(bodyParser.urlencoded({extended: true}));
如果你想接收 json 输入
app.use(bodyParser.json());
在我的情况下,它是由我的应用程序将http
重定向到https
引起的。 更新 Facebook 以使用https
uri 修复了它。
就我而言,我没有在input
字段中提供类似name="firstname"
名称标签。 添加它们后,一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.