ajax接口接收文件排坑(二)


错误处理问题

假设后端传回了一段包含错误message字段的JSON文件,如果将responseType 设置为 blob 将会导致无法解析后端传回的错误数据。

解决方案是将responseType 设置为 arraybuffer,根据http状态码来判断接口是否报错。假设接口返回400则将返回数据由arraybuffer
重新解析为String 或 Object 等我们需要的数据类型。

解析代码如下

function errorCallback(response) {
  var encodedString = String.fromCharCode.apply(null, new Uint8Array(response.data));
  var decodedString = decodeURIComponent(escape(encodedString));
  var obj = JSON.parse(decodedString);
}

其中 var decodedString = decodeURIComponent(escape(encodedString));这段代码的作用是解析utf8字符。

参考文章

Conversion between UTF-8 ArrayBuffer and String

How to read JSON error response from $http if responseType is arraybuffer


文章作者: Micheal
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Micheal !
  目录