我创建了一个将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';
答案 0 :(得分:3)
如果您要向POST
资源发出member
请求,可以使用save()
(不包含$
)并将您的正文作为第一个参数传递:
Foo.save({bar: 'bar'}, function () {
// Callback
});
但是,在创建新资源实例时,会使用$save()
方法对其进行扩充(请注意$
)。当您调用此方法时,实例本身将作为正文发送。因此,您应该将代码更改为:
var member = new Foo();
member['bar'] = 'bar';
member.$save(function () {
// Callback
});
查看此article以获取更多信息。