在最新版本的 Angular (v1.3.0) 中,他们为 application/json 的内容类型 header 添加了一个修复程序。现在我所有的响应都会出错,因为它们不是有效的 JSON。我知道我应该更改后端以使用纯文本标题进行响应,但目前我无法控制。在 Angular 尝试解析响应之前,有什么方法可以让我预先解析响应吗?
我认为这是他们所做的修复:
https://github.com/angular/angular.js/commit/7b6c1d08aceba6704a40302f373400aed9ed0e0b
我遇到的问题是我从后端得到的响应有一个保护前缀,它与 Angular 正在检查的前缀不匹配。
我试图在配置中添加一个 http 拦截器,但这没有帮助,仍然在 Angular 本身之后解析。
$httpProvider.interceptors.push('parsePrefixedJson');
我在控制台中得到的错误(它来自 Angular 中 JSON 字符串的反序列化):
SyntaxError: Unexpected token w
at Object.parse (native)
at fromJson ...
最佳答案
你应该使用
$http.defaults.transformResponse
您也不想使用
.push()
。你需要你的变压器在 angular 的默认变压器之前做它的事情。您应该改用 .unshift()
。所以你的代码应该是
$http.defaults.transformResponse.unshift(transformResponse);
其中
transformResponse
是一个函数,它将来自服务器的响应转换为正确的 JSON。
关于javascript - Angular 1.3.0 支持 JSON 响应,如何在 Angular 之前覆盖此响应或预解析响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26376223/