SyntaxError:Unexpected token < in JSON at position 0
错误表示 HTTP 请求需要 JSON 响应,但却收到了非 JSON 数据。本文介绍 SyntaxError: Unexpected token < in JSON at position 0
错误的故障排除指南,以及常见的变体:
SyntaxError:The string did not match the expected pattern
SyntaxError:JSON.parse: unexpected character at line 1 column 1 of the JSON data
JSON Parse error:Unrecognized token '<'
当请求需要 JSON 响应,但实际响应为其他格式时,就会出现此错误。JSON 解析器在检测到无效响应时会抛出一个错误。
此错误的可能根本原因包括:
Content-Type
标头未设置为 application/json
在许多情况下,意外的响应是包含服务器端错误细节的 HTML 或 XML。
添加错误处理代码,并将错误和响应数据记录到控制台,以调查为什么没有收到有效的 JSON。如何记录数据取决于代码是使用 fetch()
还是 JSON.parse()
。
常见的根本原因及其解决方案包括:
fetch()
的 URL 是否正确。fetch()
记录响应数据
JavaScript fetch()
函数可能类似于以下内容:
错误发生在调用 response.json()
时,且数据无法解析为 JSON 格式。例如,响应可能是 HTML 或 XML。
通过创建响应的克隆并添加一个处理错误的函数,将数据打印到控制台:
response
对象只能读取一次。因此,我们希望在原始响应在第 5 行被读取之前,先创建它的克隆并打印到控制台。
在第 8 行,我们添加了一个错误处理函数。如果 response.json()
失败,则调用此函数并记录错误和 responseClone
数据,以供进一步检查。
JSON.parse()
的响应
如果代码使用 JSON.parse(data)
,请通过添加 try…catch
语句来处理错误并将响应数据记录到控制台: