我有一个接受检查模型的Web API控制器,即
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
}
});
所以我的问题是:如果我有多个检查要发布,如何将它们全部发送到控制器,无论是一批还是单批?
答案 0 :(得分:3)
在一次通话中POST多个整数应该很容易。一些快速的事情要检查:
在您的控制器中,您的方法签名是否类似于:
public void Post([FromBody]int[] values) { // code here }
请注意使用[FromBody]属性。
在您的POST中,内容类型标题是否设置为" 内容类型:application / json "?
答案 1 :(得分:0)
嗯,根据服务器的期望,这样的事情可能会起作用:
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
});
}
此外,添加.fail(...)
处理程序也是个好主意。
答案 2 :(得分:0)
我过去曾使用jQuery.json插件处理此类情况。
以下是关于如何使用它在单个AJAX调用中发送多个项目的an example I found:
<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>