Как сериализовать форму
Что я хочу
[{"itemId[0]":"143","quantity[0]":"0"},
{"itemId[1]":"142","quantity[1]":"0"}]
Возвращаемый результат
[{"name":"itemId[0]","value":"143"},{"name":"quantity[0]","value":"0"},
{"name":"itemId[1]","value":"142"},{"name":"quantity[1]","value":"0"}]
Я знал, что вопрос очень похож на jQuery serializeArray () пары значений ключей , но мне все равно не удалось ее решить.
Мой код до сих пор
javascript
....
for (var i = 0; i < checkboxes.length; i++) {
var p1 = '<tr><td><input type="hidden" name="itemId[' + i + ']" value="' + cid + '" />';
var p2 = '</td><td><input type="number" name="quantity[' + i + ']" value="0"/>';
$('#tbody').append(p1 + p2 +'</td></tr>');
}
$('#getlist').click( function() {
var formData = JSON.stringify($("#sendform").serializeArray());
alert(formData);
}
форма
<form action="" method="POST" id="sendform">
<table class="table table-md tabledata table-bordered" id="user_data">
<thead>
<tr>
<th>Item id</th>
<th>Quantity</th>
</tr>
</thead>
<tbody id="tbody">
....
<button class="btn btn-success" id="getlist">Submit</button>
</form>
Уже пробовал
var complex = $("#sendform").serialize(); // name1=value1&name2=value2
var json = toSimpleJson(complex); // {"name1":"value1", "name2":"value2"}
function toSimpleJson(serializedData) {
var ar1 = serializedData.split("&");
var json = "{";
for (var i = 0; i<ar1.length; i++) {
var ar2 = ar1[i].split("=");
json += i > 0 ? ", " : "";
json += "\"" + ar2[0] + "\" : ";
json += "\"" + (ar2.length < 2 ? "" : ar2[1]) + "\"";
}
json += "}";
return json;
}
Возврат
{"itemName%5B0%5D":"143","quantity%5B0%5D":"0","itemName%5B1%5D":"142", "quantity%5B1%5D":"0","itemName%5B2%5D":"141","quantity%5B2%5D":"0"}