我正在尝试将一些数据发布到服务器,但我不知道如何取回响应数据。
我有以下代码:
fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: login,
password: password,
})
}).then(function(a){
console.log(a);
})
它打印一个
Response
它包含数据,例如 body (ReadableByteStream), bodyUsed (false), ok (true), status (200),...
但我找不到我取回的数据,无处可寻。当我打开 chrome 开发人员控制台 - 网络时,我在那里看到了响应数据。
我做错了什么?
我一直在寻找一些资源如何获取,承诺,......工作,但我找不到任何写得好的。
还有其他方法可以调用获取响应,例如
.json()
或 .blob()
。这些方法返回一个承诺,您可以调用 .then()
on.
fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: login,
password: password,
})
})
.then(function (a) {
return a.json(); // call the json method on the response to get JSON
})
.then(function (json) {
console.log(json)
})
查看一些关于使用 fetch 的文档,以及一些关于response 对象如何在 fetch 调用中工作 的其他文档。
fetch
返回 Promise
可以解析为具有多种方法的 Response
对象,如 text()
、json()
、blob()
,它也返回 Promise
和 String
/ Object
/ Blob
.
所以你必须 resolve promise 两次!!
fetch(...)
.then((rsp) => rsp.json())
.then((obj) => console.log(obj));