AngularJS 请求负载始终为空

AngularJS Request payload is always empty

我创建了一个 Angular 资源,可以将 POST 数据发送到 Web 服务。这是我的工厂:

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("/");
    };

});

当我在客户端提交表单时,它 returns 状态为 500。查看 Firebug,我可以看到我的 POST 数据负载由于某种原因始终为空。

我做错了什么?

PS。我已将其添加到我的配置中:$httpProvider.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';

如果您想向 member 资源发出 POST 请求,您可以使用 save()(没有 $)并将您的正文作为第一个参数:

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

然而,当创建一个新的资源实例时,它被扩充了一个 $save() 方法(注意 $)。当您调用此方法时,实例本身作为正文发送。因此,您应该将代码更改为:

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

查看此 article 了解更多信息。