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