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


 上一篇
买不起airPods怎么办? 买不起airPods怎么办?
redmi airdots 你值得拥有先看下特性参数蓝牙5.0,单耳机重量4.1g,7.2mm动圈,分体式。基本上蓝牙5.0分体式其他品牌找不到200块以下,估计300块以下都很难。100¥基本屌全场。 在100-1200这个价位区间里面,
2019-04-30
下一篇 
谁能真正make American greate again? 谁能真正make American greate again?
今天第一次知道杨安泽(Andrew Yang),美籍华裔祖籍台湾正在准备参加2020年美国总统大选。政治主张中主要的一条是要给每个满18周岁的美国人每月发1000美元。 为什么,以及如何做到基础职工的失业不可避免现在的工业自动化是如此,未
2019-04-24
  目录