Web API通过jQuery POST发送多个对象
我有一个接受检查模型的Web API控制器,即Web API通过jQuery POST发送多个对象,jquery,json,asp.net-web-api,Jquery,Json,Asp.net Web Api,我有一个接受检查模型的Web API控制器,即 public class Inspection { public int ID {get; set;} } 我已经在控制器上创建了一个POST方法。这很好,我已经用jQuery对其进行了测试 在我的javascript页面中,我创建了一个检查,即 var inspection = { ID: '123456' }; 然后像这样执行$.ajax: var p = $.ajax({ type: 'POST', url
public class Inspection
{
public int ID {get; set;}
}
我已经在控制器上创建了一个POST方法。这很好,我已经用jQuery对其进行了测试
在我的javascript页面中,我创建了一个检查,即
var inspection = {
ID: '123456'
};
然后像这样执行$.ajax:
var p = $.ajax({
type: 'POST',
url: 'http://...',
cache: false,
data: JSON.stringify(item),
dataType: 'json',
success: function(response) {
//do stuff
}
});
所以我的问题是:如果我有多个检查要发布,我如何将它们全部发送给控制器(一批或一批)?Hm,根据您的服务器的期望,类似的操作可能会起作用:
var itemArr = [inspection0, inspection1, inspection2]; // etc...
var p = $.ajax({
type: 'POST',
url: 'http://...',
cache: false,
data: JSON.stringify(itemArr),
dataType: 'json',
success: function(response) {
//do stuff
}
}).fail(function(data) {
// handle failure
});
或者,要分批发送,请执行以下操作:
var i = 0,
max = itemArr.length;
for (; i < max; i++) {
$.ajax({
type: 'POST',
url: 'http://...',
cache: false,
data: JSON.stringify(itemArr[i]),
dataType: 'json',
success: function(response) {
//do stuff
}
}).fail(function(data) {
// handle failure
});
}
var i=0,
最大=项目长度;
对于(;i
另外,添加一个.fail(…)
处理程序可能也是个好主意。我过去曾在这种情况下使用过该插件
下面介绍如何使用它在一个AJAX调用中发送多个项目:
<script src="<%= Url.Content("~/Scripts/jquery-1.3.2.min.js") %>" type="text/javascript"></script>
<script src="<%= Url.Content("~/Scripts/jquery.json-2.2.min.js") %>" type="text/javascript"></script>
<script type="text/javascript">
function savePayment() {
//Creating some test data
var lineItems = new Object();
lineItems.Entrys = new Array();
lineItems.Entrys[0] = new Object({ Approved: "1.0", Deductible: "1.0", Coinsurance: "1.0", PaymentAmount: "1.0", VisitId: "1.0", VisitChargeId: "1.0" });
lineItems.Entrys[1] = new Object({ Approved: "2.0", Deductible: "2.0", Coinsurance: "2.0", PaymentAmount: "2.0", VisitId: "2.0", VisitChargeId: "2.0" });
//Posting them to server with ajax
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: '<%=Url.Action("SavePayment", "Home") %>',
dataType: 'json',
data: $.toJSON(lineItems),
success: function(result) {
if (result) {
alert('Success');
}
else {
alert('Failure');
}
}
});
}
</script>
函数savePayment(){
//创建一些测试数据
var lineItems=新对象();
lineItems.Entrys=新数组();
lineItems.Entrys[0]=新对象({批准:“1.0”,免赔额:“1.0”,共同保险:“1.0”,付款金额:“1.0”,VisitId:“1.0”,VisitChargeId:“1.0”});
lineItems.Entrys[1]=新对象({批准:“2.0”,免赔额:“2.0”,共同保险:“2.0”,付款金额:“2.0”,VisitId:“2.0”,VisitChargeId:“2.0”});
//使用ajax将它们发布到服务器
$.ajax({
键入:“POST”,
contentType:'application/json;charset=utf-8',
url:“”,
数据类型:“json”,
数据:$.toJSON(行项),
成功:功能(结果){
如果(结果){
警惕(“成功”);
}
否则{
警报(“故障”);
}
}
});
}
在一个调用中发布多个整数应该很容易。以下是一些需要快速检查的事项:
public void Post([FromBody]int[] values) { // code here }
请注意[FromBody]属性的使用刚刚尝试了这个,控制器没有正确解释数据。@markp3rr我的更新有什么进展吗?(拆分为多个HTTP调用。)能否更改配置为“POST”动词的方法,以接受IEnumerable或List作为参数?@markp3rry我没有意识到这个问题与ASP.net有关。如果我的答案不适用,请告诉我。我已经按照你的建议做了很多。ajax请求到达了“成功”部分,但是web服务方法中的列表是空的。听起来是个好主意,我将在早上试一试。看起来您正在发回一个“经典”控制器,而不是一个Web API控制器-我是否正确?@markp3rry是的,这个示例不适用于Web API。我们的目标主要是向您展示如何将多个
Inspection
对象捆绑在一起,并使用jQuery.json
将它们捆绑在一起,在一篇文章中发送它们。您可以发布API控制器及其操作方法吗?另外,您是否尝试过使用接受HttpRequestMessage然后解析请求内容的方法,而不是依赖于列表的模型绑定?我将给您一个upvote和接受的答案,因为我的部分问题是我没有按照您的建议设置内容类型。