$ http请求成功并出错

时间:2016-03-16 15:42:57

标签: javascript angularjs ajax

我有以下简单的代码:

$http(request)
    .success(function(data){                                            
                ...
            })
    .error(function(data){
                ...
            });

我得到的一个问题是当响应导致错误时,我在JSON响应中找回了一个错误,我可以通过data.error看到它,但是我现在使用它的方式是data.error实际上是成功,而不是错误。

处理此问题的最佳方法是什么?它会简单:

if (data.error){ ....

2 个答案:

答案 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.
  });
希望这会对你有帮助!