当前位置: 首页 > 知识库问答 >
问题:

fetch()输入意外结束

赵修诚
2023-03-14

我使用fetch()从api服务器获取数据。我的错误是这样的:

Uncaught (in promise) SyntaxError: Unexpected end of input at 
  fetch.then.blob.

你能告诉我我做错了什么吗。

const weatherAPi ='https://www.metaweather.com/api/location/523920';
fetch(weatherAPi, {
  mode: 'no-cors'
}).then(blob => blob.json())
  .then(data => console.log(data))

共有3个答案

陆弘光
2023-03-14

很多好的回答,但我选择了这个:

      const response = await fetch(url, {
        method: 'GET',
        headers: {
          Authorization: 'Bearer ' + accessToken
        }
      });
      const string = await response.text();
      const json = string === "" ? {} : JSON.parse(string);
      return json;
胡俊贤
2023-03-14

我遇到了同样的问题。在我的情况下,它不是由解决方案所指出的“不透明”响应类型引起的。此代码会导致空响应的错误,因为'fetch'不接受具有空正文的响应:

return fetch(urlToUser, parameters)
.then(response => {
  return response.json()
})
.then((data) => {
  resolve(data)
})
.catch((error) => {
  reject(error)
})

相反,在我的情况下,这更有效:

return fetch(urlToUser, parameters)
.then(response => {
  return response.text()
})
.then((data) => {
  resolve(data ? JSON.parse(data) : {})
})
.catch((error) => {
  reject(error)
})

即使正文为空,获取文本也不会产生错误。然后检查数据是否存在并解析。我希望这有帮助:-)

璩俊雅
2023-03-14

对跨来源资源的< code>no-cors请求的响应具有“不透明”响应类型。如果您在尝试将响应转换为JSON之前记录响应,您将看到一种“不透明”的类型。

不透明类型被列为“严格限制”,如 whatwg.org 上的获取规范中所述。

不透明过滤响应是类型为“不透明”的过滤响应,url列表为空列表,状态为0,状态消息为空字节序列,标题列表为空,正文为空,尾部为空。

正如谷歌文档中对不透明字体的解释,当字体不透明时,它们当前不能被读取。

不透明响应是对不同来源的资源发出的请求,它不返回CORS头。对于不透明的响应,我们将无法读取返回的数据或查看请求的状态,这意味着我们无法检查请求是否成功。使用当前的fetch()实现,不可能从窗口全局范围请求不同来源的资源。

这可以是依赖于环境的,也可以是依赖于语言的。例如,您可以通过更改服务器配置来更改Nginx环境中的CORS设置,也可以在应用html" target="_blank">程序代码(例如PHP)中指定标头。

我强烈推荐阅读Mozilla文档中关于CORS请求和访问控制允许起源的内容。

PHP中的一个示例:

<?php
header("Access-Control-Allow-Origin: *");  // "*" could also be a site such as http://www.example.com
 类似资料:
  • 我使用fetch()从api服务器获取数据。我的错误是这样的: 你能告诉我我做错了什么吗。

  • console.log 我尝试在cros平台上使用fetch the json,为什么Google developer工具中的请求头会显示provision请求头。预览部分可以向我显示json响应,但是响应promise之后的promise无法读取数据,错误发生在上面的控制台日志中。我获取的URL是所有人都可以使用的开源URL。 非常感谢您的帮助。

  • 我使用fetch简单地从虚拟apiendpoint获取数据,但当我在函数中添加配置时,我得到了一个意外的输入错误结束。 这工作得很好,控制台记录了200个项目的数组 但当我将configs作为参数添加时,它会显示和错误。 错误: 和

  • 我正在尝试在Go API服务器和基于React的前端之间发送JSON。我得到以下错误: 错误:SyntaxError:JSON输入意外结束 它说这发生在第25行,这是 这是相关的函数: 在尝试了一些故障排除之后,我将错误捕捉添加到带有“成功”和“错误”输出的函数中,这样它至少可以停止弹出错误页面,并在API服务器上添加一些控制台输出,以查看数据是否正在传递。 除了出现错误之外,一切似乎都在按预期运

  • 问题内容: 我正在研究一些代码来解析来自HTTP响应的JSON数据。我的代码看起来像这样: 变量中的json 如下所示: 但是,不是零。当我打印出来时,上面写着。是什么原因造成的?JSON似乎有效。此错误与我的自定义结构有关吗? 提前致谢! 问题答案: 所述的结果是一个语法错误在JSON输入(可能丢失,或)。该错误不取决于您解码到的值的类型。 我在操场上使用示例JSON输入运行了代码。它运行没有错

  • 问题内容: 有什么问题或。请阅读以下代码(或运行它,看看会发生什么): 它创建一个文件,通过GZIP 写入单个字节格式,并以相同格式读取同一文件中的字节。 这就是我运行的内容: 由于某些原因,阅读线似乎走错了路。 我搜索了该错误,并发现了一些有关Oracle的错误报告,这些错误报告是在2007-2010年间发布的。因此,我认为该错误仍然存​​在,但是我不确定我的代码是否正确,因此让我在此处发布并听