Массив JavaScript, не публикуемый в файл PHP с помощью Ajax - PullRequest
1 голос
/ 19 апреля 2019

У меня есть массив JavaScript, который взят из HTML-формы, которые являются флажками. Я использую name = "DayChosen []", чтобы получить данные в массив, который я могу передать в Ajax. Я знаю, что данные поступают в массив при входе в консоль, но кажется, что они теряются при переходе на страницу PHP. Я пытаюсь собрать выбранные элементы, открыть новую страницу и опубликовать данные на этой странице.

Я пытался закодировать его в json, а затем декодировать с помощью PHP, но я получаю нулевое значение. Я также пытался использовать JSON, но все равно не получилось.

Я использовал var_dump, чтобы найти, что я возвращаю нулевое значение.

   <form> 
    <input type = "checkbox" class="CourseDay" name = "DayChosen[]"  value = "Legal"><i class="checkbox-pposition DayChosen">Legal Module</i><br>        
    <input type = "checkbox" class="CourseDay" name = "DayChosen[]"  value = "Day 1"/><i class="checkbox-pposition DayChosen">Day 1</i><br>
    <input type = "checkbox" class="CourseDay" name = "DayChosen[]"  value = "Rodent"/><i class="checkbox-pposition DayChosen">Day 2 Rodent</i><br>
    <input type = "checkbox" class="CourseDay" name = "DayChosen[]"  value = "Large animal"><i class="checkbox-pposition DayChosen">Day 2 Large animal </i><br>
    <input type = "checkbox" class="CourseDay" name = "DayChosen[]"  value = "Aquatic"><i class="checkbox-pposition DayChosen">Day 2 Aquatic</i><br>
    <input type = "checkbox" class="CourseDay" name = "DayChosen[]"  value = "Wildlife"><i class="checkbox-pposition DayChosen">Day 2 Wildlife</i><br>

<select class="Register-Multiple form-control">
     <option disabled selected value > -- Select number of Students to Register -- </option>
  <?php 
      for ($x = 1 ; $x <= 10; $x++) {
         echo '<option value = '.$x.'>'.$x.'</option>';
      } 
  ?>
</select>

     <input type="submit" id = "Register" class="col-6 text-center btn btn-primary Register" value="Register">
  </form>



  <script type="text/javascript">




  $('.Register-Multiple').on('change', function (e){



var courses = [];
$("input[type=checkbox]:checked").each ( function() {
      courses.push($(this).val());
      console.log($(this).val());

});


$.ajax({
       type: "POST",
       url:  '../../wp-content/themes/traffica/Multiple- 
registration.php',
       data: {courses:courses}, // serializes the form's elements.
       success: function(data)
       {

          console.log(data);

              window.open('../../wp- 
content/themes/traffica/Multiple-registration.php');
       }

     });

});

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

Вы пропустили при изменении функции закрывающие скобки

Пожалуйста, добавьте закрывающие скобки при изменении функции

И, пожалуйста, добавьте свой код и запустите его

$('.Register-Multiple').on('change', function (e){
    var courses = [];
    $("input[type=checkbox]:checked").each ( function() {
       courses.push($(this).val());
       console.log($(this).val());

     });

      console.log(courses);

       $.ajax({
           type: "POST",
           url:'sample.php',
           data: {courses:courses}, // serializes the form's elements.
           success: function(data)
           {

                console.log(data);
           }

      });
});

И файл phpиспользовать для получения массива

print_r($_POST['courses']);
0 голосов
/ 19 апреля 2019

Массив может быть передан двумя способами

//first is serialize
$result = serialize($array);
//second method 
$result = json_encode($array);

В вашем случае json может потерпеть неудачу, если в массиве есть строка, отличная от UTF8, или есть какая-то другая проблема, тогда вы можете использовать serialize insted. Если вы предпочитаете json, вы можете проверитьchar, установленный как UTF8
Дайте ему попробовать и проверить error.log для любого вывода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...