javascript - Angular js $http 服务 :- header is not accessible inside catch block

标签 javascript angularjs http-headers xmlhttprequest

我尝试了不同的方法来访问 catch block 中的 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 收到一个响应对象,这个对象将包含 http header 。

demo

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;



    }
  }

})

关于javascript - Angular js $http 服务 :- header is not accessible inside catch block,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874385/

相关文章:

jsp - 当从不同 JSP 调用相同方法时得到 200 响应时出现 400 Bad Request

http - wget 会自动发送哪些 header ?

javascript - 从项目数组动态创建链接

javascript - JavaScript 中的 OOP,JavaScript 对象属于什么类?

javascript - pushNotification.onDeviceReady 未定义?

javascript - AngularJS ng-route如何在解析时发出http请求

java - 配置 Apache HttpClient 以通过代理/负载平衡器访问服务(覆盖主机 header )

javascript - 如何让 DIV 滑入和滑出?

angularjs - 如何在 ionic 中制作相同大小的按钮

javascript - Angular 2 : Toggle Boolean based on a condition