2014-02-23 44 views
0

我有这样的代码:

$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 
+0

这可能是一个愚蠢的答案,但是......试着只在'.success'中留下'data'。 – xmarston

+0

看起来很奇怪,我发现你的代码没有问题,它几乎是一个copy'n'paste fra http://docs.angularjs.org/api/ng/service/$http。您是否尝试过使用其他网址? –

+0

这是从他们的网站复制/粘贴。我不知道什么是错的,我的应用程序中的每个网址的行为都是相似的。有人说它与内容长度0有关,可能是真的吗? @RickiRunge –

回答

0

你需要确保你在你的拦截器的“responseError”返回拒绝承诺属性。如果您只是简单地返回响应或者不执行'responseError',那么无论状态码如何,成功函数都会运行。

相关问题