如何将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
}
发布于 2015-01-23 09:52:59
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在指定内容类型方面也是部分正确的。
屏幕抓取
发布于 2015-01-23 10:08:26
您必须将内容类型头部添加到ajax请求中,以便WebAPI能够理解请求并使用正确的格式化程序来反序列化数据:
$.ajax({
url: urlString,
type: 'POST',
data: sc,
dataType: 'json',
contentType: "application/json",
crossDomain: true,
cache: false,
success: function (data) { console.log(data); }
});
发布于 2016-01-08 13:34:28
您可以在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); }
});
https://stackoverflow.com/questions/28106872
复制相似问题