我有一个与REST API通信的angularjs应用程序的问题。问题是api返回状态代码并且还添加了状态描述,如HTTP / 1.1 417无效数量。 使用jquery ajax,jqXHR对象有一个statusText属性但是使用angularjs我似乎无法找到如何在我的错误处理程序中访问它。不用说我无法修改API,例如417状态代码可以返回不同的状态描述。 我发现我需要更改angularjs库,但是如果有更新,这将不方便。我必须将xhr.responseText更改为xhr.statusText。我可以以某种方式从我的代码覆盖此函数,不修改角度库吗?
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
completeRequest(
callback, status || xhr.status, xhr.responseText, xhr.getAllResponseHeaders());
}
};
答案 0 :(得分:1)
以下是获取StatusText的工作(指出一些移动浏览器从成功的响应中删除了数据:https://stackoverflow.com/a/28470163/1586498
我还发现Angular中$。http的.success和.error没有传递StatusText,你必须使用.then(响应)
答案 1 :(得分:0)
您需要在模块配置期间将httpInterceptor创建为outlined here。
// register the interceptor as a service
$provide.factory('myHttpInterceptor', function($q) {
return function(promise) {
return promise.then(function(response) {
// do something on success
}, function(response) {
//do something for your 417 error
if(response.status == 417) {
alert("We've got a 417!");
return $q.reject(response);
}
//some other error
return $q.reject(response);
});
}
});
$httpProvider.responseInterceptors.push('myHttpInterceptor');
答案 2 :(得分:0)
在AngularJS 1.2.16中添加了对statusText的支持。