JavaScript获取响应返回undefined

时间:2017-11-09 23:49:12

标签: javascript fetch

我正在尝试使用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。我可以想象这应该很简单,但我不知道这里发生了什么。

1 个答案:

答案 0 :(得分:2)

我遇到了类似问题,其中response.body正在返回undefined。与OP的代码并不完全相同,但我猜这可能是同一个问题,而且搜索引导我到这里,所以发布我的答案。

这是因为尚未读取正文,只有响应头已到达。访问响应正文的正确方法是:

fetch('/user').then((resp) => resp.json().then((body) => console.log(body)))

阅读身体的各种方式(如文本,JSON等......)是documented here