我本以为错误请求会在$ http#error定义的函数中处理,但实际上并没有发生。相反,我不得不创建一个拦截器。即使我知道状态码应该是404,响应中返回的状态码却是0。
$http({url: "myurl", method: "GET"}).success(
function(data, status, headers, config) {
if (data.ret_code === 200) {
//do something
}
}).error(function(data, status, headers, config) {
//NEVER GETS HERE ON BAD REQUEST!!
});
这里是拦截器:
var interceptor = ['$q', function ($q) {
function success(response) {
return response;
}
function error(response) {
//ALWAYS 0!
var status = response.status;
return $q.reject(response);
}
return function (promise) {
return promise.then(success, error);
}
}];
1-为什么会出现这种情况? 2-有没有办法在$http#error中捕获坏请求? 3-有没有办法获取实际的404状态码?