我有以下简单的代码:
$http(request)
.success(function(data){
...
})
.error(function(data){
...
});
我得到的一个问题是当响应导致错误时,我在JSON响应中找回了一个错误,我可以通过data.error看到它,但是我现在使用它的方式是data.error实际上是成功,而不是错误。
处理此问题的最佳方法是什么?它会简单:
if (data.error){ ....
答案 0 :(得分:2)
根据Angular docs:
200到299之间的响应状态代码被视为成功 status并将导致调用成功回调。注意 如果响应是重定向,XMLHttpRequest将透明 按照它,意味着不会为此调用错误回调 响应。
因此,如果您在JSON中返回data.error
,但是在HTTP状态代码为200的情况下返回响应,则不会调用.error
处理程序。
然后回答你的问题,是的 - 做if (data.error) {... }
这样的事情就可以了。
答案 1 :(得分:1)
首先你不应该使用.success和.error(参见https://docs.angularjs.org/api/ng/service/ $ http#deprecation-notice)
所以你应该按照以下方式使用:
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
希望这会对你有帮助!