$ httpProvider拦截器无法设置未定义的属性“x”

时间:2014-06-06 22:10:42

标签: javascript angularjs http undefined interceptor

这是我想为每个http请求添加auth令牌和idx的交易 当我尝试获得TypeError: Cannot set property 'site' of undefined时 这是拦截器

$httpProvider.interceptors.push(function($q, $cookies,$location) {
  return {
    'request': function(config) {   
      config.data.auth ='hasAuth';
      config.data.token = $cookies.token;
      config.data.idx = $cookies.idx;
      console.log(config);

      return config;
    }

  };
});

这是$ http请求。

app.controller('coolCtrl', function($scope, $http, makeUrl, $cookies){
    var info={};
    info = $cookies.eidx;

    var test = $http.post("https://example.com/uri/list", info )
    .success(function (data) {
        $scope.data = data
    });

});

错误
TypeError: Cannot set property 'auth' of undefined

我觉得我在所有的承诺中混淆了 提前谢谢你 -James

1 个答案:

答案 0 :(得分:0)

经过大量的调试后,我终于明白了。

$httpProvider.interceptors.push(function($q, $cookies,$location) {
return {
    'request': function(config) { 
      if (typeof config.data !== undefined){
        config.data.auth ='hasAuth';
        config.data.token = $cookies.token;
        config.data.idx = $cookies.idx;
        console.log(config);
      }
      return config;
    }

  };
});

angular正在尝试设置config.data.auth,当它发出包含无数据请求的任何请求时。所以我必须手动检查数据,然后设置它。