Чтобы получить значение из нескольких флажков, я использую этот код:
<form class = "myform" method = "post" action = "">
<input type = "checkbox" class = "checkbox" value = "11" /><br>
<input type = "checkbox" class = "checkbox" value = "22" /><br>
<input type = "submit" value = "Go" />
</form>
Аякс:
$(document).ready(function(){
$('.myform').on('submit', function(e){
//Stop the form from submitting itself to the server.
e.preventDefault();
var checkboxvalue = $('.checkbox').val();
$.ajax({
type: "POST",
url: '',
data: {checkboxvalue: checkboxvalue},
success: function(data){
$('.response').html(data);
}
});
});
});
PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$value = false;
if (isset($_POST['checkboxvalue'])){
$value = $_POST['checkboxvalue'];
}
echo 'The value was: ' . $value;
exit;
}
Проблема в том, что при установке второго флажка я получаю значение 11 , это значение первого флажка.
При установке обоих флажков я также получаю значение 11
Чего я хочу добиться: если я поставлю первый флажок, он должен дать мне 11 в качестве вывода. Установив второй флажок, он должен вывести 22 в качестве значения. И при установке обоих флажков он должен вывести 11 и 22 в качестве значения.
Как я могу достичь этого?
Будет больше одного элемента с классом checkbox, так что посмотрите на jQuery каждый()



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно добавить атрибут имени, чтобы проверить
<input type = "checkbox" class = "checkbox" name = "value-check" value = "11" /><br>
var checkboxvalue = [];
$.each($("input[name='value-check']:checked"), function(){
checkboxvalue.push($(this).val());
});
я попробовал это, и теперь эхо: The value was: Array
@mudraya да, это массив
вы можете использовать checkboxvalue.join(", "), чтобы преобразовать его в отдельную строку запятой
или вы можете использовать implode(" ",$value); в php
Вам нужно установить флажок, который выбран, проблема с вашим кодом в том, что он всегда дает вам значение первого выбранного флажка всегда
var chkArray = [];
$(".checkbox:checked").each(function() {
chkArray.push($(this).val());
});
var selected;
selected = chkArray.join(',') ;
console.info(selected)<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div><input type = "checkbox" value = "1" class = "checkbox"> Value 1</div>
<div><input type = "checkbox" value = "2" class = "checkbox" checked = "checked"> Value 2</div>
<div><input type = "checkbox" value = "3" class = "checkbox"> Value 3</div>
<div><input type = "checkbox" value = "4" class = "checkbox"checked = "checked"> Value 4</div>
<div><input type = "checkbox" value = "5" class = "checkbox"> Value 5</div>Вам нужно создать массив и заполнить значениями, если флажок установлен.
$(document).ready(function(){
$('.myform').on('submit', function(e){
//Stop the form from submitting itself to the server.
e.preventDefault();
var values = [];
$('.checkbox').each(function() {
if ($(this).is(':checked')) {
values.push($(this).val());
}
});
console.info(values);
});
});
См. Кодепен
ИСПОЛЬЗОВАТЬ ЭТО
$(document).ready(function(){
$('.myform').on('submit', function(e){
e.preventDefault();
var checkboxvalue = [];
$("input[type=checkbox]:checked").each(function(i){
checkboxvalue.push( i.value );
});
$.ajax({
type: "POST",
url: '',
data: {checkboxvalue: checkboxvalue},
success: function(data){
$('.response').html(data);
}
});
});
});
PHP
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$value = false;
/* the check box value in array*/
print_r($_POST['checkboxvalue']);
if (isset($_POST['checkboxvalue'])){
$value = $_POST['checkboxvalue'];
}
exit;
}
Я пробовал это, но у меня все еще не работает. Не могли бы вы дать мне полный рабочий код, пожалуйста? Итак, форма, js и php? Я не так хорошо знаком с ajax
к сожалению, до сих пор нет эха
вы должны проверить консоль.
добавьте json stringify в свои данные ajax @mudraya