Полезная нагрузка запроса AngularJS всегда пуста

Я создал ресурс Angular, который отправляет данные POST в веб-службу. Вот моя фабрика:

appServices.factory('Foo', function($resource) {
    var data = $resource(
      'http://localhost:3000/api/v1/foo.json',
      {},
      {
        'save': {
            method: 'POST', 
            cache: false
        }
      });
    return data;
});

Вот мой контроллер:

appControllers.controller('FooCtrl', function($scope, Foo, $location) {
    $scope.memberData = {};
    $scope.create = function() {
      var member = new Foo();
      member.$save( {}, { bar: bar });
      $location.url("/");
    };

});

Когда я отправляю форму в своем клиенте, она возвращает статус 500. Заглянув в Firebug, я вижу, что моя полезная нагрузка данных POST всегда по какой-то причине остается пустой.

Что я делаю не так?

PS. Я добавил это в свой конфиг: $httpProvider.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';


person HermannHH    schedule 03.09.2015    source источник


Ответы (1)


Если вы хотите выполнить запрос POST к ресурсу member, вы можете использовать save() (без $) и передать свое тело в качестве первого аргумента:

Foo.save({bar: 'bar'}, function () {
    // Callback
});

Однако при создании нового экземпляра ресурса он дополняется методом $save() (обратите внимание на $). Когда вы вызываете этот метод, сам экземпляр отправляется как тело. Итак, вы должны изменить свой код на:

var member = new Foo();
member['bar'] = 'bar';
member.$save(function () {
    // Callback 
});

Прочтите эту статью для получения дополнительной информации.

person muenchdo    schedule 03.09.2015