Angularjs资源状态描述

时间:2013-01-23 13:30:57

标签: angularjs

我有一个与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());
    }
  };

3 个答案:

答案 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的支持。