我正在尝试POST
使用fetch
API将数据发送到服务器,每次我最终都会得到一个空的正文。
据我从fetch
文档中得知,要发布数据,您需要传递一个方法键设置为“ POST”的对象,以及一个带有字符串或FormData
对象(或其他对象)的主体键。
这是一个简单的示例,但并没有按我期望的那样工作:
var formData = new FormData();
formData.append("test", "woohoo");
formData.append("foo", "bar")
// prints out contents of formData to show that it has contents!
formData.forEach(function(key, value) {
console.log(`${key}: ${value}`);
});
fetch("/fetch", {
method: "POST",
body: formData
}).then(function(response) {
return response.json();
}).then(function(json) {
// Logs empty object
console.log(json);
}).catch(function(err) {
console.log(err);
});
我在此服务器的背面也有一个快速服务器,用于记录请求正文并在响应中回显它。
app.post("/fetch", function(req, res) {
// Logs empty object :(
console.log(req.body);
res.send(JSON.stringify(req.body));
});
我将添加formData
为fetch
请求的主体,但似乎没有任何结果。
请在此要点中找到我的测试文件并提供帮助!
这是因为您的节点服务器无法正确理解mulitpart表单(即FormData
默认情况下将发送的表单)。
您可以在服务器上使用node-muliparty,而无需触摸前端代码即可轻松阅读表单。
就像是:
var multiparty = require('multiparty');
var app = express();
app.post("/fetch", function(req, res) {
var form = new multiparty.Form();
form.parse(req, function(err, fields, files) {
console.log(fields);
res.send(JSON.stringify(fields));
});
});
您index.js
将向您显示它可以正常工作。可能有一种方法可以使之工作,body-parser
但我自己不知道。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句