javascript - Angular 1.3.0 支持 JSON 响应,如何在 Angular 之前覆盖此响应或预解析响应?

标签 javascript json angularjs angular-http angular-http-interceptors

在最新版本的 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/

相关文章:

json - Data.Aeson 编码可选键

javascript - Angular ng-disabled 功能

javascript - 具体来说,在哪些 JS 引擎中,toLowerCase 和 toUpperCase 区域设置敏感?

javascript - 在 Ember 中,如何在修改 ArrayController 内容后更新 View ?

javascript - 如何使用 jQuery 实现这个很酷的 popup div 效果?

javascript - 如何在 jspdf autotable 中的列标题和行之间添加字段名称作为第一行?

java - GSON - 反序列化原始数组

javascript - 浏览器渲染分析工具

c# - Newtonsoft如何读取多个json的内容?

javascript - 具有 ng-repeat 和属性的指令模板中的指令