我的理解是,当我
$http.post()
像下面的代码一样,我的拦截器应该预处理不兼容的数据,并对其错误/成功方法作出响应。但当我这样做的时候
$q.reject(response.data);
(我已经检查了数据是否存在)。然后在我的错误中,我会得到那些我拒绝的数据。但我没有
data
在
.error
为空
代码:
LTS
是我的模块
Http请求
$http.post("/overview", searchCriterias).success(function(data) {
console.log('InboundController : success in http call');
$scope.searchState = "result";
$scope.result = data;
}).error(function(data, status, headers, config) {
console.log('InboundController : error in http call');
$scope.searchState = "error";
console.log(data);
if (data.errorMessage)
$scope.result = data.errorMessage;
else
$scope.result = data;
});
拦截器
LTS.factory('defaultHttpInterceptor', function($q) {
return {
response: function(response) {
// do something on success
// console.log(response.headers());
if (response.headers()['content-type'].indexOf("application/json;charset=UTF-8") > -1) {
// Validate response, if not ok reject
var dataPresent = response.data;
if (dataPresent && dataPresent.state && dataPresent.state !== "OK") {
console.log(response.data);
return $q.reject(response.data);
} else {
return response.data;
}
}
return response;
},
responseError: function(response) {
// do something on error
console.log('defaultHttpInterceptor : http error');
return $q.reject(response);
}
};
});
LTS.config(function($httpProvider) {
$httpProvider.interceptors.push('defaultHttpInterceptor');
});