在AngularJS $ http.post()调用中检测格式错误/无效的JSON

时间:2013-08-31 19:32:19

标签: json angularjs

AngularJS's source中可以看出,任何返回200-299范围内的HTTP代码的$ http.post请求都会触发success()回调,即使响应包含无效数据(例如无效) JSON)。

我专门设置我的呼叫responseType: 'json',即使这样,当其他东西回来时,也会触发成功回调。这在开启PHP的display_errors设置的开发服务器中尤其令人讨厌。当出现问题时,服务器端和PHP会输出错误消息,AngularJS应用程序不会检测到这一点,并继续愉快地继续。

有没有办法防止这种情况发生?我的意思是,当响应数据无效JSON时,让AngularJS应用程序触发error()回调?

由于

1 个答案:

答案 0 :(得分:2)

所以即使出错,您的PHP服务器也会响应200错误代码?不知道PHP,这对我来说感觉像是服务器配置问题。我期望有效载荷出现500错误。话虽这么说,我可以随便想到两件事。

$http包含transformResponse个处理程序,您可以设置这些处理程序来检查问题的响应。

$http还包括“拦截器”的概念,它允许您获取响应有效负载并对其执行某些操作。您可以使用拦截器“拒绝”响应。

transformResponse文档中有关$http和“拦截器”的更多信息: http://docs.angularjs.org/api/ng。$ HTTP