在 fetch api 中使用 FormData() 不起作用

Joh*_*jon 5 javascript form-data fetch

我通读了一遍,但找不到答案。

当我使用 FormData() 时,它返回状态 404 错误请求。

但是,如果我像 const requestBody 中那样传递数据(硬编码)(下面的示例),它就可以完美工作。

这是我的代码:

    var formData = new FormData();
    formData.append("nickname", "johxns");
    formData.append("password", "john_password");
    formData.append("email", "john@server.com");

    // If I do it this way, and assign this to body inside fetch, it works perfectly
    // const requestBody = '{"nickname": "johxns","password":"john_password","email":"john@server.com"}';

    fetch("http://localhost:5000/create_user", {
        // if instead of formData, I assign requestBody to body, it works!
        body: formData,
        headers: {
            "Content-Type": "application/json"
        },
        method: "POST"
    }).then(function(response) {
        return response.text();
    }).then(function(data){
        console.log('data', data);
    }).catch(function(err){
        console.err(err);
    });
Run Code Online (Sandbox Code Playgroud)

我已经尝试过 URLSearchParams,但仍然无法使其工作。

谢谢。

Sho*_*jep 8

如果您不发送 json,则不应将Content-Type标头设置为。application/json根据这个答案,你不需要设置Content-Type标题。

正文数据类型必须与“Content-Type”标头匹配

使用获取