不知何故我的 req.body 总是空的,也许你有一个想法:
这是我的服务器代码:
const Express = require('express');
const bodyParser = require('body-parser');
const app = new Express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.post('/save', (req, res) => {
console.log(req.body) // => {}
res.send(req.body);
});
const env = process.env.NODE_ENV || 'production';
app.listen(3000, err => {
if (err) { return console.error(err); }
console.info(`Server running on http://localhost:${port} [${env}]`);
});
当我尝试使用 javascript 发送表单数据时,req.body 为空:
const data = new FormData(document.querySelector('form'));
console.log(data); // seems empty already??? FormData{}??
const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:3000/save');
xhr.send(data);
与邮递员相同:
我不明白这个…
发送 x-www-form-urlencoded
邮递员或 raw (application/json)
在邮递员中工作。但是在 javascript 中使用 Formdata 发送相同的标题仍然会导致一个空对象……
原文由 chitzui 发布,翻译遵循 CC BY-SA 4.0 许可协议
记录 formData 中的每个字段
小提琴 - https://jsfiddle.net/thesumit67/j4znhxa5/1/
要通过快速处理它,请使用 multer 。这是一个例子 - https://www.npmjs.com/package/multer
确保在表单元素上添加
enctype="multipart/form-data"
。否则 Multer 会忽略它。