JSON配列をWeb APIに投稿するにはどうすればよいですか?単一のオブジェクトに対して機能しています。
これは私が試したものですが、コントローラーは予想される0
ではなく3
を返しているようです。
これは私のJSONです:
var sc = [{
"ID": "5",
"Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a",
"Table_ID": "Allergy_Trns",
"Checksum": "-475090533",
"LastModified": "2015-01-22T20:08:52.013"
},
{
"ID": "5",
"Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a",
"Table_ID": "Allergy_Trns",
"Checksum": "-475090533",
"LastModified": "2015-01-22T20:08:52.013"
},
{
"ID": "5",
"Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a",
"Table_ID": "Allergy_Trns",
"Checksum": "-475090533",
"LastModified": "2015-01-22T20:08:52.013"
}];
AJAX呼び出し:
$.ajax({
url: urlString,
type: 'POST',
data: sc,
dataType: 'json',
crossDomain: true,
cache: false,
success: function (data) { console.log(data); }
});
Web APIコントローラー:
[HttpPost]
public string PostProducts([FromBody]List<SyncingControl> persons)
{
return persons.Count.ToString(); // 0, expected 3
}
Jsonにエラーがあります_Table_ID": "Allergy_Trns"
_は_"Table_ID": "Allergy_Trns"
_でなければなりません。
二重引用符がありません。
更新
次のように、jsonとしてパラメーターを送信していることを確認する必要があります。
_ $.ajax({
url: urlString,
type: 'POST',
data: JSON.stringify(sc),
dataType: 'json',
contentType: 'application/json',
crossDomain: true,
cache: false,
success: function (data) { console.log(data); }
});
_
JSON.stringify(sc)
、@ herbiは、コンテンツタイプの指定についても部分的に正しいことに注意してください。
画面の取り込み
WebAPIがリクエストを理解し、正しいフォーマッターを使用してデータをデシリアライズできるように、コンテンツタイプヘッダーをajaxリクエストに追加する必要があります。
$.ajax({
url: urlString,
type: 'POST',
data: sc,
dataType: 'json',
contentType: "application/json",
crossDomain: true,
cache: false,
success: function (data) { console.log(data); }
});
Content TypeをbeforeSendに設定すると、jsonデータがサーバーオブジェクトと確実に一致するようになります。
$.ajax({
beforeSend: function (xhr) {
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
},
url: urlString,
type: 'POST',
data: sc,
dataType: 'json',
contentType: "application/json",
crossDomain: true,
cache: false,
success: function (data) { console.log(data); }
});