【发布时间】:2019-12-20 00:20:13
【问题描述】:
我使用以下代码通过 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?我的代码有问题吗?
【问题讨论】:
-
您在“网络”选项卡中看到了哪个状态代码?
-
@SebastianSimon
200 -
您在网络标签正文中看到了什么?错误对象的其余部分是什么?
-
@epascarello 不确定 network 标签正文 是什么。如问题中所述,响应为空。我在哪里可以找到错误对象的其余部分?
-
我认为@epascarello 的意思是浏览器开发工具中的面板/选项卡,它的字面意思是网络。如果你去那个网络面板,你可以检查请求和响应——包括请求/响应主体,以及所有的标头。
标签: javascript google-chrome post fetch-api