AngularアプリケーションからNancyフレームワークを使用した.Net Webサービスにオブジェクトの配列を渡す必要があります。
私はこれを試しました:
function TestCtrl($scope, $http){
$scope.postTest = function(){
var data = [obj1, obj2, obj3];
$http({
url: 'myURL',
method: "POST",
data: data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
}).success(function(data){
alert("done");
});
}
}
ただし、サーバーは500内部サーバーエラーを送信します。
なぜ機能しないのかわかりません。私はWebサービスの専門家ではありませんが、シリアル化の問題だと思います。
誰かが私を助けることができますか?
この投稿 によると、あなたは正しい、これはシリアル化についてです。 Angularはデータを自動的にシリアル化しません 、送信する前にデータを解析する必要があります:
...
$http({
url: 'myURL',
method: "POST",
data: $.param(data),
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
})...
JQueryを使用しない場合は、独自の$.parse
。 ここにスニペット があるか、または jQuery実装を適応させる があります。
angular.toJson(data)
の代わりに動作するはずです
$.param(data)
fauverism が正しい場合、angular.toJson(data)を使用できます。代わりにではなく、しかし$ .paramの前に。
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");
});
}
}
$ httpParamSerializerまたは$ httpParamSerializerJQLikeを使用できます
$http(
url: 'myURL',
method: "POST",
data: $httpParamSerializer(data),
)