I'm trying to post the multidimensional array values using checkbox to server side. But unfortunately cannot figure out the way to do it with checkbox.
What I trying to do is posting the ID, (NAME, VALUE) using ajax but yet only send one single array.
<input type="hidden" id="addon_id" value="8"> //value is dynamic
<input type="checkbox" name='addon[]' value="1.99" title="Item 1"> //value and title are dynamic
<input type="checkbox" name='addon[]' value="5.99" title="Item 2">
<input type="checkbox" name='addon[]' value="3.99" title="Item 3">
jQuery
var addon = [];
$.each($("input[name='addon[]']"), function() {
if ($(this).is(":checked")) {
addon.push($(this).val());
}
});
$.ajax({
url: '<?php echo site_url('cart/add_to_cart'); ?>',
type: 'POST',
data: {
addon_id: addon_id,
addon: addon
},
dataType: "JSON",
success: function(response) {
//response
}
});
currently sending format
[addon] => Array
(
[0] => 1.99
[1] => 5.00
[2] => 3.89
)
Array format trying to send
Array
(
[8] => Array(
[0] => Array(
[name] => ITEM 1
[price] => 1.99
)
[1] => Array(
[name] => ITEM 2
[price] => 5.99
)
[2] => Array(
[name] => ITEM 3
[price] => 3.99
)
)
)
JSON
"8":{
"0":{
"name":"ITEM 1",
"price":"1.99"
},
"1":{
"name":"ITEM 2",
"price":"5.99"
},
"2":{
"name":"ITEM 3",
"price":"3.99"
}
}
for the loop you have to include both values in an array:
$.each($("input[name='addon[]']"), function() {
if ($(this).is(":checked")) {
addon.push({"name":$(this).attr("title"), "price":$(this).val()});
}
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.