JavaScript 未收到获取请求正文参数

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" 消息是否意味着请求的正文由于某种原因被忽略了?难道这都是服务器的错?

免责声明: 我对网络开发有点陌生,所以如果我遗漏了一些明显的要点,请原谅我。

试试这个

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);
        });

如果您保留 "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);
});