一尘不染

如果responseType为arraybuffer,如何从$ http读取JSON错误响应

angularjs

我使用加载一些二进制数据

$http.post(url, data, { responseType: "arraybuffer" }).success(
            function (data) { /*  */ });

如果发生错误,服务器将以错误的JSON对象响应,例如

{ "message" : "something went wrong!" }

有什么方法可以得到与成功响应不同类型的错误响应?

$http.post(url, data, { responseType: "arraybuffer" })
  .success(function (data) { /*  */ })
  .error(function (data) { /* how to access data.message ??? */ })

阅读 774

收藏
2020-07-04

共1个答案

一尘不染

编辑:正如@Paul LeBeau指出的那样,我的答案假设响应是ASCII编码的。

基本上,您只需要将ArrayBuffer解码为字符串并使用JSON.parse()。

var decodedString = String.fromCharCode.apply(null, new Uint8Array(data));
var obj = JSON.parse(decodedString);
var message = obj['message'];

我在IE11和Chrome中进行了测试,效果很好。

2020-07-04