AngularJS请求有效负载始终为空

时间:2015-09-03 20:59:07

标签: angularjs ngresource

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

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';

1 个答案:

答案 0 :(得分:3)

如果您要向POST资源发出member请求,可以使用save()(不包含$)并将您的正文作为第一个参数传递:

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

但是,在创建新资源实例时,会使用$save()方法对其进行扩充(请注意$)。当您调用此方法时,实例本身将作为正文发送。因此,您应该将代码更改为:

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

查看此article以获取更多信息。