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

在最新版本的Angular(v1.3.0)中,他们为application / json的内容类型标头添加了一个修复程序.现在我的所有响应都会出错,因为它们不是有效的
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.

点赞