'Send same name multiple checkbox values via ajax
I have multiple checkbox input elements.
<input type="checkbox" name="userpages[]" id="1" value="1"/>
<input type="checkbox" name="userpages[]" id="2" value="2"/>
<input type="checkbox" name="userpages[]" id="3" value="3"/>
<input type="checkbox" name="userpages[]" id="4" value="4"/>
I want to pass the value of checked element to the php script via Ajax. I tried doing it this way -
var pages = $('input[name="userpages[]"]:checked');
$.ajax({
type: 'POST',
url: 'post.php',
data: {pages: pages},
dataType: 'json',
success: function(data) {
if(data.status == 1) {
alert('Successfully posted on your Facebook pages !');
} else if(data.status == 0) {
alert('Error !! Please try again.');
} else {
alert('Unknown Error. Reloading this page now...');
location.reload();
}
}
});
and retrieved the value in php script -
foreach($_POST['pages'] as $page_id) {
echo $page_id;
}
But this didn't worked for me. I also tried getting the value of variable pages
, when alerted it popped up 'object Object'. Any help would be appreciable. :)
Solution 1:[1]
var checked = [];
$("input[name='userpages[]']:checked").each(function ()
{
checked.push(parseInt($(this).val()));
});
Solution 2:[2]
The array is correct. However, it is an array consisting of jQuery DOM elements, not the values of the inputs.
To get the data in the form of index => value
pairs in the array, to send it by AJAX, use something like the following:
var data = []
$('input[name="userpages[]"').each (function (index, element) {
data[$(element).attr('id')] = $(element).val();
});
console.log(data);
Send the gathered data using the jQUery AJAX function.
A JSFiddle: http://jsfiddle.net/LMbxC/1/
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Don't Panic |
Solution 2 | Hidde |