在前端开发中,我们经常需要从服务端获取数据并进行处理。而其中一种获取数据的方式就是使用 AJAX 请求。而有时候我们需要判断返回的数据类型是否为 JSON 格式,因为不同的数据格式需要不同的处理方式。那么在 JavaScript 中,如何判断 AJAX 响应是否为 JSON 呢?
方式1:检查响应头
HTTP 协议中规定了 Content-Type 头可以用于说明响应内容的类型。对于 JSON 数据,Content-Type 头的值通常为 “application/json”。因此我们可以通过检查响应头来判断 AJAX 响应是否为 JSON。
-- -------------------- ---- ------- ----- --- - --- ----------------- --------------- ------------- ---------- - ---------- - -- ----------- --- ---- - ----- ----------- - -------------------------------------- -- ------------------------------------------ - ----- -------- - ----------------------------- -- -- ---- -- - ---- - -- -------- - - -- -----------
上述代码中,我们通过 xhr.getResponseHeader()
方法获取了响应头中的 Content-Type,然后通过 String.prototype.includes()
方法判断是否包含 "application/json" 字符串。
但是需要注意的是,并非所有服务端都会正确地设置 Content-Type 头,所以这种方法并不可靠。
方式2:尝试解析 JSON
另外一种判断 AJAX 响应是否为 JSON 的方法是尝试解析响应数据为 JSON 对象。如果解析成功,则说明数据格式为 JSON,否则就不是。
-- -------------------- ---- ------- ----- --- - --- ----------------- --------------- ------------- ---------- - ---------- - -- ----------- --- ---- - --- --------- --- - -------- - ----------------------------- -- -- ---- -- - ----- --- - -- -------- - - -- -----------
上述代码中,我们使用了 JSON.parse()
方法将响应数据解析为 JSON 对象。如果解析成功,则说明数据格式为 JSON,否则就会抛出一个异常,我们可以通过 try ... catch
语句来捕获并处理异常。
需要注意的是,在解析 JSON 数据时,如果响应数据不是严格符合 JSON 格式,也会导致 JSON.parse()
抛出异常。
总结
以上就是判断 AJAX 响应是否为 JSON 的两种方法。需要注意的是,由于服务端返回的数据可能存在格式问题或者服务端没有正确地设置 Content-Type 头,因此这两种方法都不是百分之百可靠的。在实际开发中,我们需要根据具体情况进行选择,并做好异常处理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/28911