我如何在 fetch 调用中解析简单的 json 响应
Posted
技术标签:
【中文标题】我如何在 fetch 调用中解析简单的 json 响应【英文标题】:How can i parse simple json response in fetch call 【发布时间】:2019-11-17 19:23:17 【问题描述】:我在获取响应中得到了简单的 json 对象。当我试图访问它时,它被捕获了。
this my reposnse
"islogin": true
fetch(url, data)
.then(res => console.log(res);return res.json())
.then(
(result) =>
console.log("rsult",JSON.stringify(result));
console.log(result.islogin);
console.log("1");
console.log("authentication success");
)
.catch((error) => window.alert("error", error);
console.log("authentication failed");
);
我期望 result.islogin 为真/假。但它不会进入 then(result) 回调。
【问题讨论】:
那么,你在alert
中得到了什么(为什么不使用它来记录它呢?console.error)?因为如果它没有出现在你的 then 结果中,那么它应该进入你的 catch 中。
您的操作方式(从第一个 then
处理程序返回 res.json()
,然后在第二个处理程序中使用解析的数据)是正确的。你有an unrelated error [编辑:实际上,它可能不是无关的],但你应该从你的第二个then
处理程序中看到正确的结果 if 返回的 JSON 确实如题。不相关(?)错误是您没有检查 HTTP 操作是否成功。 fetch
API(在我看来)设计不佳,HTTP 错误是实现,而不是拒绝。
总是在您询问导致错误的内容时引用错误消息。
我可以在 chrome 中成功点击状态码为 200 的 url,但在 fetch 响应中显示状态码为“0”。我该如何解决这个问题。
【参考方案1】:
fetch(URL,
method: "POST", // "GET/POST"
headers:
"Content-Type": "application/json"
,
body: JSON.stringify(data)
)
.then(r => r.json())
.then(r =>
console.log('Response', r) // You will get JSON response here.
).catch(error => console.error('Error', error))
我遇到了类似的问题,因为缺少 Content-Type 标头,有时是因为没有对请求有效负载进行字符串化。试试这段代码,看看它是否有效。以上是我用于我的项目的工作 sn-p。
【讨论】:
以上是关于我如何在 fetch 调用中解析简单的 json 响应的主要内容,如果未能解决你的问题,请参考以下文章