[英]JavaScript fetch request body parameters not received
上下文:我正在尝试使用 JavaScript 向服务器发送放置请求,并从我正在编写的 html 文件中获取。
问题:我提出的请求在 Insomnia 中有效,但是当我尝试从 html 发送它时,它没有被正确接收。 该代码也是由 Insomnia 生成的。 当我从 html 发送请求时,请求被发送,我得到了一个好的回复,但服务器没有完成请求中的任务,这让我相信它没有收到或者我错过了一些东西。 尝试发送请求时,控制台会显示响应,表示“ok”、200 等,但还有“bodyUsed: false”部分。
Insomnia 生成的函数:
fetch("url", { "method": "PUT", "headers": { "content-type": "application/x-www-form-urlencoded" }, "body": { "name": "name", "desc": "description" } }) .then(response => { console.log(response); }) .catch(err => { console.log(err); });
问题:代码有问题吗? 服务器如何接收请求而不是正文? “bodyUsed: false”消息是否意味着由于某种原因忽略了请求的正文? 难道这一切都是服务器的错?
免责声明:我对 Web 开发有点陌生,所以如果我错过了一些明显的点,请原谅我。
如果你保持"content-type": "application/x-www-form-urlencoded"
并且你的服务器是这样配置的,你应该使用这样的FormData发送你的数据:
var formData = new FormData();
formData.append('name', 'Chris');
formData.append('descr', 'description');
fetch("url", {
"method": "PUT",
"headers": {
"content-type": "application/x-www-form-urlencoded"
},
"body": formData
})
.then(response => {
console.log(response);
})
.catch(err => {
console.log(err);
});
尝试这个
let formData = new FormData();
formData.append('name', 'name value');
formData.append('desc', 'description value');
fetch('url', {
method: 'POST',
credentials: 'same-origin',
body: formData
}).then(rawResponse => rawResponse.json())// or rawResponse.text() to get simple string
.catch(error => {
console.log(error);
})
.then(response => {
console.log(response);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.