我正在尝试正确解释对 URL 的 fetch 调用的响应,我认为它是一个 json 字符串。我已经根据这里的类似帖子尝试了许多变体,但没有任何东西可以让我使用有用的数据。这是一种尝试:
fetch('http://serverURL/api/ready/', {method: "POST", mode: "no-cors"})
.then(function(response) {
response.json().then(function(data) {
console.log('data:' + data);
});
})
.catch(function(err) {
console.log('Fetch Error :-S', err);
});
这会在控制台中返回语法错误:
SyntaxError: JSON.parse: 数据在第 1 行第 1 列处意外结束
JSON 数据
所以也许它不是 JSON...如果我在 console.log 行上放置一个断点,并将鼠标悬停在响应上(上面的行),我会看到带有各种字段的响应对象(?):
不知道如何解释...status:0 表明它没有得到有效的响应。但是,如果我检查开发人员工具中的“网络”选项卡,然后单击获取行,则状态为 200,并且“响应窗口/JSON”部分显示消息信息,如果您只是将 URL 放入浏览器 URL,您也会看到该信息直接吧。 “响应负载”部分也是如此,它显示了 JSON 字符串:
{"msg": "API 已准备就绪。", "success": true}
所以...它看起来像 json,不是吗?但是 fetch 无法将其作为 json 获取?
这是另一种变体,但使用response.text()而不是response.json()
fetch('http://serverURL/api/ready/', {method: "POST", mode: "no-cors"})
.then((response) => {
console.log(response);
response.text().then((data) => {
console.log("data:" + data);
});
});
这会在控制台中打印响应对象(与上面相同:ok: false、status:0、type:opaque 等)。第二个 console.log 文件在 data: 之后不打印任何内容。如果我使用response.json,我会再次收到有关数据结尾的语法错误,如上所述。
有任何想法吗?我意识到服务器可能无法提供 fetch 需要或想要的内容,但是,它确实提供了一些信息(至少在直接在浏览器中使用 URL 时),这就是我需要处理的信息,如 json 或文本或其他内容。