我正在尝试使用fetch来加载一些服务器数据。这是代码:
fetch('/user', {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-type': 'application/json'
},
body: JSON.stringify({
data: 'test'
})
})
.then(response => {
if (response.status !== 200) {
console.log('Fetch status not OK');
}
else {
console.log('Fetch ok');
console.log(response); // Undefined here
}
})
.catch(error => {
console.log('network error');
});
在浏览器(网络)上,我可以看到从服务器返回的响应有效负载,但我的响应包含undefined
。我可以想象这应该很简单,但我不知道这里发生了什么。
答案 0 :(得分:2)
我遇到了类似问题,其中response.body
正在返回undefined
。与OP的代码并不完全相同,但我猜这可能是同一个问题,而且搜索引导我到这里,所以发布我的答案。
这是因为尚未读取正文,只有响应头已到达。访问响应正文的正确方法是:
fetch('/user').then((resp) => resp.json().then((body) => console.log(body)))
阅读身体的各种方式(如文本,JSON等......)是documented here。