我想将Javascript数组发布到WebAPI。
我有我的Javascript数组,如:
var checkedGroups = [];
var checkedStaff = [];
$.each(items, function () {
if (this.checked) {
type = dataAdapter.records[this.id - 1].VALUETYPE;
if (type == 'Staff') {
checkedStaff[checkedStaff.length] = this.value;
} else {
checkedGroups[checkedGroups.length] = this.value;
}
}
});
然后我使用它发送给我的WebAPI:
data: { staff: JSON.stringify(checkedStaff) };
我的WebAPI控制器就像:
public HttpResponseMessage Post([FromBody] formData data)
{
string string_group = String.Join(",", data.group);
string string_staff = String.Join(",", data.staff);
}
我的formData类是这样的:
public class formData
{
public Array group { get; set; }
public Array staff { get; set; }
}
如上所述,我想将数组拆分出来以制作逗号分隔字符串。
但是服务器端的string_staff变量只是一个空字符串,我的JSON数据是这样的:
staff: "["1"]"
group: ""
我不想在数组中使用键/值类型。
有什么想法吗?
答案 0 :(得分:0)
将checkedGroups和checkedStaff变量更改为对象文字。 Javascript中的关联数组并不像你试图设置的那样。
var checkedGroups = {};
var checkedStaff = {};
$.each(items, function () {
if (this.checked) {
type = dataAdapter.records[this.id - 1].VALUETYPE;
if (type == 'Staff') {
checkedStaff[checkedStaff.length] = this.value;
} else {
checkedGroups[checkedGroups.length] = this.value;
}
}
});
如果您这样做,可以将它们保留为数组:
checkedStaff.push(this.value);
答案 1 :(得分:0)
通常,您应该使用jQuery ajax函数$.ajax({ ... })
发布到Web API控制器。我发现这种方法效果最好:
function postJSON(data)
{
return $.ajax({
url: '/api/xyz',
type: 'POST',
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8" // must have this option set
});
}
function doSomethingElse() {
postJSON({ staff: checkedStaff, group: checkedGroup })
.done(function(response) { ... });
}