使用Express node.js接收邮件表单中的req.body
我有一个简单的表单,发送POST数据到我的Node.JS服务器,与Express。 这是forms:
<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和input与来自Twitter的自动完成库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
input有关的问题。 任何解决这个问题…?
感谢您的提前!
req.body
由名称和值组成。
在search框中添加name="search"
,然后再试一次。
你也必须使用express / connect.bodyParser()中间件,谢谢Nick Mitchinson!
我有这个问题,事实certificate我正在使用app.use(express.bodyParser());
但是在我使用的代码之后。 移动它解决了这个问题。
快递4将是这一个。 (请注意,这不会parsing多部分/上传)。
app.use(bodyParser.urlencoded({extended: true}));
如果你想接收JSONinput
app.use(bodyParser.json());
在我的情况下,这是由我的应用程序redirecthttp
到https
。 更新Facebook使用https
uri修复它。