Pass array of data from Angular $http POST
According to this post, you're right, this is about serialization. Angular doesn't automatic serialize the data for you, you need to parse the data before sending it:
...$http({ url: 'myURL', method: "POST", data: $.param(data), headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }})...
If you don't use jQuery, you'll need to roll your own $.parse
. There is a snippet here or you could adapt jQuery implementation.
fauverism is right, you can use angular.toJson(data). Not instead, but before $.param though.
function TestCtrl($scope, $http){$scope.postTest = function(){ var data = [obj1, obj2, obj3]; var jsonData=angular.toJson(data); var objectToSerialize={'object':jsonData}; $http({ url: 'myURL', method: "POST", data: $.param(objectToSerialize), headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } }).success(function(data){ alert("done"); });}
}