我希望执行XMLHttpRequest
到GET
资源,但问题是资源可能有两种不同的格式,我也不知道哪一种。第一个是文本application/json
,在这种情况下,我想要一个string
或一个已经解析过的对象;第二个是二进制application/zip
,在这种情况下,我想要一个Blob
然后我可以用JSZip处理。我总是可以Blob
请求它,检查响应标头,然后在必要时使用FileReader
将其转换为string
,但这感觉有点笨重。有没有更好的办法?浏览器兼容性要求:IE10 +和最新的其他内容。
答案 0 :(得分:3)
最简单的方法是将.responseType
设置为Blob
,然后检查.type
的{{1}}。如果.response
为.type
,请使用"application/json"
获取FileReader.prototype.readAsText()
,否则请使用JSON
Blob
。
您还可以在实际请求之前执行.response
请求,检查HEAD
标头以确定如何处理实际请求的响应。