无法阅读属性'协议'在$ http.put中未定义

时间:2014-05-14 10:00:05

标签: angularjs

我被困在我的角色应用程序中。我得到错误"无法阅读属性'协议'未定义"在我的$ http.put请求中。我看过其他与此错误相关的帖子。根据这些帖子,这是由于请求中存在无效的标头。但在我的情况下,标题是有效的,因为我的其他请求具有相同的标题正在工作 我的控制器代码如下:

angular.module('myWebApp').controller('updateAccountController',
    function ($scope, $rootScope, $location,authFactory) {
        $scope.updateAccount = function () {
            authFactory
                    .updateAccount($scope.firstName, $scope.lastName, $scope.country)
                    .success(function (data) {});
        };
    }
);

我的服务如下:

var BASE = 'https://abc.com/';
angular.module('myWebApp').factory('authFactory',
    function ($location, $http) {
        var factory = {};

        factory.updateAccount = function (firstName, lastName, country) {
            var config = {
                headers: {
                    'Authorization': 'Basic ' + sessionStorage.getItem('token')
                }
            };

            var userData = '{"type":"AccountDetails","firstName":"' + firstName +
                           '","lastName":"' + lastName + 
                           '","country":"' + country + '"}';

            return $http.put(BASE + 'account', config, userData);
        };

        return factory;
    }
);

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

您以错误的顺序向 $http.put() 提供了参数。

而不是:$http.put(BASE + 'account', config, userData);

应该是:$http.put(BASE + 'account', userData, config);