我使用以下方法加载一些二进制数据
$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 ??? */ })
3条答案
按热度按时间cnjp1d6j1#
编辑:正如@Paul LeBeau指出的,我的回答假设响应是ASCII编码的。
基本上,您只需要将ArrayBuffer解码为一个字符串,然后使用JSON.parse()。
我在IE11和Chrome中运行了测试,这一切都很好。
ar7v8xwq2#
@smkanadl的回答假设响应是ASCII码,如果你的响应是其他编码,那就不起作用。
现代浏览器(例如FF和Chrome,但还不支持IE)现在支持
TextDecoder
接口,该接口允许您解码来自ArrayBuffer
的字符串(通过DataView
)。bqjvbblv3#
假设在您的服务中,有一个要使用的函数,例如,This is for Angular 2
请确保返回时是res.json()而不是res.json。希望对任何有此问题的人有所帮助