我使用加载一些二进制数据
$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 ??? */ })
编辑:正如@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中进行了测试,效果很好。