JSON存储在响应变量中在哪里?

时间:2019-05-14 12:43:53

标签: javascript json fetch

fetch()响应变量中存储的JSON数据在哪里?

我尝试通过检查标题来检查控制台中的属性,但在那里看不到。

enter image description here

2 个答案:

答案 0 :(得分:2)

  

fetch()响应变量中存储的JSON数据在哪里?

最初不是。当您从fetch获得响应时,响应主体(尚未被fetch部分读取)(可能正在浏览器的ajax模块中的某些缓冲区中等待,但您不能直接访问它)。它正在等待您通过textjsonarrayBufferblobformData方法读取它。

在您的情况下,您大概正在使用json。调用json后,主体将被读取到内部缓冲区中并进行解析,然后将其解析结果用于实现json方法中的承诺。因此,此时,它存储在返回的诺言对象json中,可以通过使用诺言来访问(而不以其他任何方式)。

要访问响应的JSON,请调用json并使用产生的Promise:

fetch(/*...*/)
.then(response => {
    if (!response.ok) {
        throw new Error("HTTP status code " + response.status);
    }
    return response.json();
})
.then(data => {
    // Use the parsed data here
})
.catch(error => {                    // If you return the chain, you can leave this off
    // Handle/report the error here
});

或在async函数中:

const response = await fetch(/*...*/);
if (!response.ok) {
    throw new Error("HTTP status code " + response.status);
}
const data = await response.json();
// Use the parsed data here

答案 1 :(得分:0)

调用获取服务时,您会在响应对象中得到响应

fetch('./api/myservice')
.then(
function(response) {
  if (response.status !== 200) {
    console.log('Looks like there was a problem. Status Code: ' +
      response.status);
    return;
  }

  // response
  response.json().then(function(data) {
    console.log(data);
  });
}
)
.catch(function(err) {
console.log('Fetch Error :', err);
});