【发布时间】:2014-03-24 22:00:54
【问题描述】:
我有这个代码:
$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
【问题讨论】:
-
这可能是一个愚蠢的答案,但是...尝试只将
data留在.success中。 -
看起来很奇怪,我看你的代码没什么问题,它几乎是复制'n'paste fra docs.angularjs.org/api/ng/service/$http。您是否尝试过使用其他网址?
-
这是他们网站的复制/粘贴。我不知道怎么了,我的应用程序中的每个 url 行为都一样。有人说它与 content-length 0 有关,这是真的吗? @RickiRunge
-
我不希望 content-lengh 为 0 - 如果确实如此,那么这将是 Angular 中的错误。如果你创建一个总是返回 400 和一些内容的 URL,你可以排除这种情况。
-
我会询问你的拦截器然后不返回拒绝承诺
$q.reject(reason)
标签: javascript jquery ajax angularjs angularjs-service