为什么我得到了"Fetch Failure Load&Quot;,而它实际上是有效的? [英] Why do I get "Fetch failed loading" when it actually worked?

查看:42
本文介绍了为什么我得到了"Fetch Failure Load&Quot;,而它实际上是有效的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用以下代码通过Fetch API将用户位置发布到我自己的后端服务:

window.onload = () => {
    let getPosition = (options) => {
        return new Promise((resolve, reject) => {
            navigator.geolocation.getCurrentPosition(resolve, reject, options);
        });
    };

    getPosition().then(pos => {
        const data = new FormData();
        data.append('latitude', String(pos.coords.latitude));
        data.append('longitude', String(pos.coords.longitude));

        fetch('/', {             // <--- error is thrown in this line
            method: 'POST',
            body: data
        }).then(response => {
            if (!response.ok) {
                throw Error('Data sent - Network response NOT OK');
            } else {
                console.log('Data sent - Network response OK')
            }
        });
    });
};

这可以完美地工作,后端服务会发回一个肯定的空响应。Data sent - Network response OK已记录在浏览器控制台中,一切正常,只是之后立即记录了以下内容:

为什么我得到Fetch failed loading: POST即使POST成功,但响应正常,Chrome网络选项卡中的状态代码为200 OK?我的代码有问题吗?

推荐答案

我的行为与您看到的相同。 我的服务器使用204(空响应)和空(内容长度=0)响应来响应POST请求。 我尝试将其更改为只返回"OK"消息(编辑:实际上现在只是返回创建的对象),fetch错误日志消失了。

在我看来,当响应正文为空时,fetch(至少在Chrome中)错误地记录为FETCH FILED,即使请求成功。

这篇关于为什么我得到了&quot;Fetch Failure Load&Quot;,而它实际上是有效的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆