I have a form on a page and the data inputed gets posted to the server. I am right now tying to add an array to the post like so:
JavaScript
x
29
29
1
$("#createTankForm").submit(function() {
2
if ($(this).valid()) {
3
var data = $(this).serializeArray();
4
var celVerLst = [];
5
var formsLst = $(".TankCalVertList").find("#createTankForm .adminRow");
6
$(formsLst).each(function (i, v) {
7
var celVert = {
8
Number: $(this).find("#Number").val(),
9
Border: $(this).find("#Border").val(),
10
Volume: $(this).find("#Volume").val(),
11
Constant: $(this).find("#Constant").val(),
12
}
13
celVerLst.push(celVert);
14
});
15
data.push({
16
name: "TankCalVerts",
17
value: celVerLst
18
});
19
data = jQuery.param(data);
20
// at this point TankCalVerts is "object[]"
21
$.automation.worker.postUserData(this.action, data, function(data) {
22
$(".AdmClicked").click();
23
});
24
} else {
25
$(this).addClass("invalidForm");
26
}
27
return false;
28
});
29
As written in the comment above I get
TankCalVerts=%5Bobject+Object%5D%2C%5Bobject+Object%5D
in the post
And in the action method:
How do I do this?
EDIT:
JavaScript
1
15
15
1
postUserData: function(url, data, callback) {
2
//$.LoadingOverlay("show");
3
$.ajax({
4
url: url,
5
type: 'POST',
6
data: data,
7
success: function(data) {
8
if (callback) {
9
callback(data);
10
//$.LoadingOverlay("hide");
11
}
12
},
13
});
14
}
15
Advertisement
Answer
After some thinkering and some help from a brilliant friend we came up with this:
JavaScript
1
5
1
var objFormData = {};
2
for (var intIndex = 0; intIndex < data.length; intIndex++) {
3
objFormData[data[intIndex].name] = data[intIndex].value;
4
}
5
We took the serialized data and turned it in to an object which we then posted as a JSON.
I had done a solution where I built my own object but in thise case it would be up to 30 paramaters and i was trying to avoid it and with the simple loop above it solved that issue.
Full answer:
JavaScript
1
10
10
1
var objFormData = {};
2
for (var intIndex = 0; intIndex < data.length; intIndex++) {
3
objFormData[data[intIndex].name] = data[intIndex].value;
4
}
5
6
$.automation.worker
7
.postJson(this.action,
8
JSON.stringify(objFormData),
9
function(data) {});
10
post json function:
JavaScript
1
16
16
1
postJson: function(url, data, callback) {
2
$.LoadingOverlay("show");
3
4
$.ajax({
5
url: url,
6
type: "POST",
7
data: data,
8
contentType: "application/json; charset=utf-8",
9
success: function(data) {
10
if (callback)
11
callback(data);
12
13
$.LoadingOverlay("hide");
14
}
15
});
16