Как передать через ajax значение нескольких чекбоксов?

Есть форма с чекбоксами. Нужно в PHP-обработчике получить значения всеx отмеченных чекбоксов. Использую jquery и метод serialize() для формы. После отправки в обработчик на сайте должен сработать поиск по выбранным критериям, но ничего не происходит. Если отправлять через обычный action, то всё работает. Как правильно сделать передачу через Ajax?
Разметка выглядит примерно так:

<form id='form'>
            <ul>
                <li>
                    <input  type="checkbox" name='pid[]' value="1"/ >Рязанский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="2"/>Спасский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="3"/>Касимовский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="4"/>Клепиковский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="5"/>Кораблинский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="6"/>Михайловский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="7"/>Пронский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="8"/>Ряжский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="9"/>Сапожковский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="10"/>Сараевский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="11"/>Сасовский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="12"/>Скопинский</li>
               <li>
                    <input  type="checkbox" name='pid[]' value="13"/>Шацкий</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="14"/>Шиловский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="15"/>Старожиловский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="16"/>Кадомский</li>
                <li>
                    <input class="knopka" type="submit" name="formSubmit" value="Далее"/>
                </li>
                  
               
            </ul>
      
                
            </form>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous"></script>
<script type="text/javascript">
$("#form").submit(function (e) { // Устанавливаем событие отправки для формы с id=form
           e.preventDefault();
            var form_data = $(this).serialize(); // Собираем все данные из формы
            $.ajax({
                type: "POST", // Метод отправки
                url: "Vyzi.php", // Путь до php файла отправителя
                data: form_data,
                success: function () {
                   location.href = 'Spec.php'; 
                }
            });
        });    
</script>

2 форма с checbox
<form id='form'>
            <ul>
             
               <li>
                    <input  type="checkbox" name='pit[]' value="1"/>Технический профиль</li>
                <li>
                    <input  type="checkbox" name='pit[]' value="2"/>Естественнонаучный профиль</li>
                <li>
                    <input  type="checkbox" name='pit[]' value="3"/>Социально-экономический профиль</li>
                <li>
                    <input  type="checkbox" name='pit[]' value="4"/>Гуманитарный профиль</li>
                <li>
                    <input class="knopka" type="submit" name="formSubmit" value="Далее"  />
                </li>
    
            </ul>
            </form>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous"></script>
<script type="text/javascript">
$("#form").submit(function (e) {
       e.preventDefault();
         var form_data = $(this).serialize(); 
         $.ajax({
              type: "POST", 
             url: "Function.php",
               data: form_data,
              success: function () {
                  location.href = 'Vyzi.php'; 
                }
            });
        });    
</script>

обработчик:
<?php
if (isset($_POST['pid'])) { $aDoor = $_POST['pid'];}

if (isset($_POST['pit'])) { $aDooor = $_POST['pit'];}
    echo $massiv;
    echo $massivv;
    
   
//выборка регионов
  if(empty($aDoor)) 
  {
        $posts = get_categories();    
  } 
  else
  {
$N = count($aDoor);
      for($i=0; $i < $N; $i++)
    {
       $array[] .= $aDoor[$i];
        $massiv = implode(",", $array);     
    }
          $posts = get_categoriess();    
  }
      echo $massiv;  
 //выборка профилей

  if(empty($aDooor)) 
  {
        $posts = get_categories();    
  } 
  else
  {
$N = count($aDooor);
   for($i=0; $i < $N; $i++)
    {
     $arrray[] .= $aDooor[$i];
    $massivv = implode(",", $arrray); 
    }
          $posts = get_categoriesss();    
  }
 echo $massivv;
    //Все записи
function get_categories() {
    global $link;   
    $sql =  'SELECT * FROM ссузы';
    $result = mysqli_query($link, $sql);
    $categories = mysqli_fetch_all($result, MYSQLI_ASSOC);
    return $categories;
}
function get_ssuz () {
    global $link;
    $sql = 'SELECT * FROM ссузы';
    $result = mysql_query($link,$sql);
    $posts = mysqli_fetch_all($result,MYSQLI_ASSOC);
    return $posts;     
}

//Записи по регионам  
    function get_categoriess() {
    global $link;
    global $massiv;
    $sql =  "SELECT * FROM `ссузы` WHERE id IN ($massiv)" ;
    $result = mysqli_query($link, $sql);
    $categories = mysqli_fetch_all($result, MYSQLI_ASSOC);
    return $categories;
}
function get_ssuzz () {  
    global $link;
    //global $massiv;
    $sql =  "SELECT * FROM `ссузы` WHERE id IN ($massiv)";
    $result = mysql_query($link,$sql);
    $posts = mysqli_fetch_all($result,MYSQLI_ASSOC);
    return $posts;   
}

//Записи по профилям
    function get_categoriesss() {   
    global $link;
    global $massivv;     
    $sql =  "SELECT * FROM `ссузы` WHERE spec IN ($massivv)" ;
    $result = mysqli_query($link, $sql);
    $categories = mysqli_fetch_all($result, MYSQLI_ASSOC);
    return $categories;
}
function get_ssuzzz () {
    global $link;
    global $massivv;  
    $sql =  "SELECT * FROM `ссузы` WHERE spec IN ($massivv)";    
    $result = mysql_query($link,$sql);    
    $posts = mysqli_fetch_all($result,MYSQLI_ASSOC);
    return $posts;
}

?>

вывод в Vyzi,php
<?php foreach($posts as $post): ?>

 <div class="product-wrap" >
  <div class="product-item">
    <img src="<?=$post['img']?>">
    <div class="product-buttons">
      <a href="<?=$post['href']?>" class="button">Подробнее</a>
    </div>
  </div>
  <div class="product-title">
    <p><?=$post['Ssuz']?></p>
  </div>
</div>
    
    <?php endforeach;?>
  • Вопрос задан
  • 1277 просмотров
Пригласить эксперта
Ответы на вопрос 1
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
У меня указанный код отрабатывает так, как и ожидается, данные отправляет POST запросом.

советую проверить, Function.php на наличие ошибок
на время дебага закомментировать location.href = 'Vyzi.php'; или заменить на alert/console.log
и добавить error коллбек, по аналогии с success

так же попробуй открыть консоль разработчика в браузере (F12), перейди на вкладку Network и посмотри что отправляется и что возвращается в ответ
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы