AngularJS $ http服务从不调用错误处理程序

时间:2014-02-23 11:14:08

标签: javascript jquery ajax angularjs angularjs-service

我有这段代码:

$http
.post('/api/login', $scope.user)
.success(function (data, status, headers, config) {
  // code
})
.error(function (data, status, headers, config) {
  // code
});

它可以工作,但即使服务器返回异常(状态500)或错误请求(400)或未授权请求(401),它仍然会调用成功处理程序。

这是来自服务器的示例响应(我的服务器是ASP.NET Web API 2):

HTTP/1.1 400 Bad Request
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcRG9jdW1lbnRzXFRpbWVUYWJsZVxqYW4tMjAxNFwxMVxUaW1lVGFibGVcVGltZVRhYmxlXGFwaVxsb2dpbg==?=
X-Powered-By: ASP.NET
Date: Sun, 23 Feb 2014 10:56:09 GMT
Content-Length: 0

1 个答案:

答案 0 :(得分:0)

您需要确保在拦截器中为'responseError'属性返回被拒绝的承诺。如果您只是返回响应或未实现'responseError',则无论状态代码如何,成功函数将始终运行。