Angular js $http 服务:- header 在 catch 块中不可访问
Angular js $http service:- header is not accessible inside catch block
我尝试了不同的方法来访问 catch 块中的 header,但无法实现。
先试试 :
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails
}).then(function(response) {
q.resolve(response);
})
.catch(function(err, status, headers) {
console.log(headers);
q.reject(err);
});
return q.promise;
}
控制台::
undefined
第二次尝试 :
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails
}).then(function(response) {
q.resolve(response);
})
.catch(function(err) {
console.log(err.headers('status-msg-header'));
q.reject(err);
});
return q.promise;
}
控制台::
TypeError: err.headers is not a function
at payment.api.js:72
at processQueue (angular.js:14569)
at angular.js:14585
at Scope.parent.$get.Scope.$eval (angular.js:15848)
at Scope.parent.$get.Scope.$digest (angular.js:15659)
at Scope.parent.$get.Scope.$apply (angular.js:15953)
at angular.js:16248
at completeOutstandingRequest (angular.js:5396)
at angular.js:5668
第三次尝试:
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails
}).then(function(response) {
q.resolve(response);
})
.catch(function(err, status, headers) {
console.log(headers('status-msg-header'));
q.reject(err);
});
return q.promise;
}
控制台::
same as of second
第四次尝试:
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails
}).then(function(response) {
q.resolve(response);
}, function(response) {
console.log(response.headers);
q.reject(response);
});
return q.promise;
}
控制台::
undefined
第五次尝试:
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails
}).then(function(response) {
q.resolve(response);
}, function(response, status, headers) {
console.log(headers);
q.reject(response);
});
return q.promise;
}
控制台:
undefined
我做了很多变体但无法访问(没有列出整个列表)。谁能帮我知道我错过了什么。
.catch 收到响应 object,此 object 将包含 http headers.
app.factory('dataService', function($http, $q){
return {
getPayment:function(){
$http({
url: 'www.google.com',
method: 'POST',
data: [{'name':'me'}]
}).then(function(response) {
$q.resolve(response.data);
})
.catch(function(response) {
console.log(response.headers('status-msg-header'));
console.log(response.status);
$q.reject(response.statusText);
});
return $q.promise;
}
}
})
终于找到解决办法了。
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails,
transformResponse: function(data) {
try {
data = JSON.parse(data);
} catch (e) {}
return data;
}
}).then(function(response) {
q.resolve(response);
},function(response) {
console.log(response.headers('status-msg-header'));
q.reject(response);
});
return q.promise;
}
我尝试了不同的方法来访问 catch 块中的 header,但无法实现。
先试试 :
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails
}).then(function(response) {
q.resolve(response);
})
.catch(function(err, status, headers) {
console.log(headers);
q.reject(err);
});
return q.promise;
}
控制台::
undefined
第二次尝试 :
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails
}).then(function(response) {
q.resolve(response);
})
.catch(function(err) {
console.log(err.headers('status-msg-header'));
q.reject(err);
});
return q.promise;
}
控制台::
TypeError: err.headers is not a function
at payment.api.js:72
at processQueue (angular.js:14569)
at angular.js:14585
at Scope.parent.$get.Scope.$eval (angular.js:15848)
at Scope.parent.$get.Scope.$digest (angular.js:15659)
at Scope.parent.$get.Scope.$apply (angular.js:15953)
at angular.js:16248
at completeOutstandingRequest (angular.js:5396)
at angular.js:5668
第三次尝试:
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails
}).then(function(response) {
q.resolve(response);
})
.catch(function(err, status, headers) {
console.log(headers('status-msg-header'));
q.reject(err);
});
return q.promise;
}
控制台::
same as of second
第四次尝试:
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails
}).then(function(response) {
q.resolve(response);
}, function(response) {
console.log(response.headers);
q.reject(response);
});
return q.promise;
}
控制台::
undefined
第五次尝试:
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails
}).then(function(response) {
q.resolve(response);
}, function(response, status, headers) {
console.log(headers);
q.reject(response);
});
return q.promise;
}
控制台:
undefined
我做了很多变体但无法访问(没有列出整个列表)。谁能帮我知道我错过了什么。
.catch 收到响应 object,此 object 将包含 http headers.
app.factory('dataService', function($http, $q){
return {
getPayment:function(){
$http({
url: 'www.google.com',
method: 'POST',
data: [{'name':'me'}]
}).then(function(response) {
$q.resolve(response.data);
})
.catch(function(response) {
console.log(response.headers('status-msg-header'));
console.log(response.status);
$q.reject(response.statusText);
});
return $q.promise;
}
}
})
终于找到解决办法了。
function removePaymentAccount(currenAccountDetails) {
var q = $q.defer();
$http({
url: UtilityService.createUrl(serverUrl, 'payment', 'removeMethod'),
method: 'POST',
data: currenAccountDetails,
transformResponse: function(data) {
try {
data = JSON.parse(data);
} catch (e) {}
return data;
}
}).then(function(response) {
q.resolve(response);
},function(response) {
console.log(response.headers('status-msg-header'));
q.reject(response);
});
return q.promise;
}