Добрый день!
Имеется форма с чекбоксами, ссылка на скрин ниже
https://ibb.co/dpQtWT
Код вывода чекбоксов
<div class="row filter-selects">
<?php if(!empty($filters["manufacturers"])): ?>
<div class="col-md-3 select">
<label>Производитель:</label><br />
<div class="search" name="manufacturer">
<?php foreach ($filters["manufacturers"] as $value => $m ): ?>
<span>
<input type="checkbox" class="manufacturer" name="manufacturer" id="<?=$m?>" value="<?=$value?>">
<label class="button-check-label" for="<?=$m?>">
<?=$m?>
</label>
</span>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
<?php if(!empty($filters["amperages"])): ?>
<div class="col-md-3 select">
<label class="text-nowrap">Номинальный ток:</label><br />
<div class="search" name="amperage">
<?php foreach ($filters["amperages"] as $value => $a): ?>
<span>
<input type="checkbox" class="button-check" name="amperage" id="<?=$a?>" value="<?=$value?>">
<label class="button-check-label" for="<?=$a?>">
<?=$a?>
</label>
</span>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
...
</div>
Получение значений с чекбоксов, а так же код передачи через ajax
var result = [];
result["manufacturer"] = [];
result["amperage"] = [];
result["type"] = [];
result["charging"] = [];
result["kz"] = [];
result["protection"] = [];
$('[name="manufacturer"]:checked').each(function() {
result["manufacturer"].push($(this).val());
});
$('[name="amperage"]:checked').each(function() {
result["amperage"].push($(this).val());
});
$('[name="type"]:checked').each(function() {
result["type"].push($(this).val());
});
$('[name="charging"]:checked').each(function() {
result["charging"].push($(this).val());
});
$('[name="kz"]:checked').each(function() {
result["kz"].push($(this).val());
});
$('[name="protection"]:checked').each(function() {
result["protection"].push($(this).val());
});
//result = JSON.stringify(result);
console.log(result);
$.ajax({
method: "POST",
url: "index.php?route=extension/module/compare/filterCount",
dataType: 'json',
data: result,
})
Так же, пробовал через функцию map
var result =[];
result["manufacturer"] = $('[name="manufacturer"]:checked').map(function(id, element){return $(element).val();});
result["amperage"] = $('[name="amperage"]:checked').map(function(id, element){return $(element).val();});
result["type"] = $('[name="type"]:checked').map(function(id, element){return $(element).val();});
result["charging"] = $('[name="charging"]:checked').map(function(id, element){return $(element).val();});
result["kz"] = $('[name="kz"]:checked').map(function(id, element){return $(element).val();});
result["protection"] = $('[name="protection"]:checked').map(function(id, element){return $(element).val();});
В консоли строит массив нормально -
https://ibb.co/gfLG38
А при передачи на сторону сервера - пустой массив.
Работаю с ларавелем, на стороне сервера,В файле php принимаю методом
public function filterCount() {
var_dump($this->request->post);
);
}
Метод ларавеля, выводит все, что пришло в посте.
Не понимаю, почему на сервер приходит пустой массив