You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 1.4.8:如何阻止$http.post自动执行JSON.parse?

解决Angular 1.4.8中$http自动解析JSON的问题

针对你遇到的Angular自动解析非JSON响应抛出异常的问题,最直接的解决方式是覆盖$http的默认响应转换行为,阻止它自动执行JSON.parse。

Angular 1.x的$http服务默认会对Content-Type为application/json的响应自动调用JSON.parse,哪怕实际返回的内容不是JSON格式也会强行解析,这就是你看到异常的原因。我们可以通过配置transformResponse选项来取消这个默认行为。

另外注意你原来的请求代码有个小问题:headers配置项被错误地放在了请求体data里面,它应该作为第三个参数(请求配置对象)的属性存在,我顺便帮你修正了这个结构问题。

修改后的完整代码如下:

return $http.post(
  $rootScope.api_url + '/jhandler',
  // 请求体数据
  JSON.stringify({ 
    'customerId': cID, 
    'method': 'getJ', 
    'data': data 
  }),
  // 请求配置
  { 
    headers: {'Content-Type': 'application/json; charset=utf-8'},
    transformResponse: [] // 禁用默认响应转换
  }
);

关键说明:

  • transformResponse: []:这个配置会清空Angular默认的响应转换函数数组,意味着响应会以原始状态返回,不会被自动解析为JSON,也就不会抛出解析异常了。
  • 修正后的配置结构:$http.post的参数顺序是url、data、config,之前你把headers放在data里是无效的,现在调整到正确的位置才能生效。

这样修改后,即使接口返回非JSON内容或者404状态,Angular都不会再尝试解析响应,你就可以避免那个讨厌的解析异常了。

内容的提问来源于stack exchange,提问作者Tahir Shahzad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:15:30