从AngularJS's source中可以看出,任何返回200-299范围内的HTTP代码的$ http.post请求都会触发success()回调,即使响应包含无效数据(例如无效) JSON)。
我专门设置我的呼叫responseType: 'json'
,即使这样,当其他东西回来时,也会触发成功回调。这在开启PHP的display_errors设置的开发服务器中尤其令人讨厌。当出现问题时,服务器端和PHP会输出错误消息,AngularJS应用程序不会检测到这一点,并继续愉快地继续。
有没有办法防止这种情况发生?我的意思是,当响应数据无效JSON时,让AngularJS应用程序触发error()回调?
由于
答案 0 :(得分:2)
所以即使出错,您的PHP服务器也会响应200错误代码?不知道PHP,这对我来说感觉像是服务器配置问题。我期望有效载荷出现500错误。话虽这么说,我可以随便想到两件事。
$http
包含transformResponse
个处理程序,您可以设置这些处理程序来检查问题的响应。
$http
还包括“拦截器”的概念,它允许您获取响应有效负载并对其执行某些操作。您可以使用拦截器“拒绝”响应。
transformResponse
文档中有关$http
和“拦截器”的更多信息:
http://docs.angularjs.org/api/ng。$ HTTP