当针对以下Node.js代码提交以下表单时,根本不会触发data
事件;代码直接转到req.on('end', callback);
function addEvent(req, res) {
"use strict";
var body = '';
req.setEncoding('utf8');
req.on('data', function(chunk) {
console.log('Got %d bytes of data', chunk.length);
body += chunk;
});
req.on('end', function() {
console.log('addEvent() request body: [%s]', body);
var postData = qs.parse(body);
dbInsertStmt.run(postData.name, postData.startDate, postData.startTime, postData.endTime, postData.anchor, postData.location, function() {
serveFromDisk('public/admin.html', res);
});
});
}
表格
<form action="../events" method="post" enctype="application/x-www-form-urlencoded">
<div class="form-group">
<label for="name">Nom</label>
<input type="text" class="form-control" id="name" placeholder="Nom de l'événement">
</div>
...
<button type="submit" class="btn btn-primary">Additionner événment</button>
</form>
我在日志中看到的内容
Incoming request: POST /events
addEvent() request body: []
知道请求正文为什么是空的?
答案 0 :(得分:2)
表单的<input>
标记缺少name
属性。没有它们,浏览器根本不会发送字段。
修复:
<input type="text" class="form-control" id="name" name="name" placeholder="Nom de l'événement">
我从Bootstrap's examples复制表单HTML时感到很惊讶。