Как получить значения Array из jquery-ajax formData в php - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь передать поле ввода, значения которого находятся в массиве, с некоторыми другими полями ввода в PHP, используя jquery-Ajax formData, все работает нормально, за исключением того, что у меня возникают проблемы с успешной передачей значений массива и я перепробовал много чего без видимого успеха.

Сначала я попробовал метод SerialiseArray (). Вот мой код ниже

 <form>
 //other input field below...
  .
  .
  .
//this is the code to include my array which is in _categories-list.php
<div class="form-group">
<label for="artist">Select Categories </label>
<?php include('../_categories-list.php') ?>
</div>    </form>

  var Category = $('#categoriesList').serializeArray();
  $.each( Category,function(i,field){
  formData.append('categoriesList', field.value + "");
                               });
   $('.msg').text('Uploading in progress...');
         ajaxcall =       $.ajax({
                    url: 'page-videoFunc.php',
                    data: formData, 
                    processData: false,
                    contentType: false,
                    type: 'POST',});

Этот конкретный метод, который я использовал, отправляет только одно значение выбранных опций в массиве. Пример:

//output: let's say the person chooses blues, hip-hop
hip-hop //will be the only value sent

Я также попробовал другой метод, аналогичный

<form>
 //other input field below...
  .
  .
  .
//this is the code to include my array which is in _categories-list.php
<div class="form-group">
<label for="artist">Select Categories </label>
<?php include('../_categories-list.php') ?>
</div>  </form>

  var Category = $('#categoriesList').serializeArray();
  formData.append('categoriesList', Category);//note that code changes here from the above method used
   $('.msg').text('Uploading in progress...');
         ajaxcall =       $.ajax({
                    url: 'page-videoFunc.php',
                    data: formData, 
                    processData: false,
                    contentType: false,
                    type: 'POST',});

Этот отправляет все значения массива, который выбран, но отправляет, но в качестве примера объекта:

//output
[object object] [object object]

И, наконец, я попробовал это: serialize ();

<form>
 //other input field below...
  .
  .
  .

//this is the code to include my array which is in _categories-list.php
<div class="form-group">
<label for="artist">Select Categories </label>
<?php include('../_categories-list.php') ?>
</div>  </form>

  var Category = $('#categoriesList').serialize(); //Note i used just serialize() here
  formData.append('categoriesList', Category);
   $('.msg').text('Uploading in progress...');
         ajaxcall =       $.ajax({
                    url: 'page-videoFunc.php',
                    data: formData, 
                    processData: false,
                    contentType: false,
                    type: 'POST',});

Что частично работает и отправляет все значения, но в формате, который, как мне кажется, не позволяет получить значения, пример:

 //output
 categoriesList%5B%5D=blues&categoriesList%5B%5D=hip-hop

Я не знаю, как получить только значения из строк запроса в этом методе, чтобы я мог поместить его в базу данных

Пожалуйста, помогите мне найти решение для любого из вышеперечисленных методов, которые я использую, я работал над этим почти 42 часа, и это замедляет мой проект

Ответы [ 2 ]

1 голос
/ 07 июля 2019

назовите Ajax как.

var Category = $('#categoriesList').serialize();
$.ajax({
                    url: 'page-videoFunc.php',
                    type: 'post',
                    data:{
                         action:'update_data',
                         form_data:Category 
                     },

});

В файле page-videoFunc.php проанализируйте данные формы, используя parse_str .

if($_POST['action'] =='update_data'){
parse_str($_POST['form_data'], $my_form_data);
echo "<pre>";
print_r($my_form_data);
}
0 голосов
/ 07 июля 2019

После использования parse_str, чтобы обрезать добавленный URL для сериализованных данных, чтобы получить все значения массива, вы должны сделать это:

 parse_str($_POST['name'], $output);
  $x = $output["name"];
  foreach ($x as $key => $value) {
   echo $value;
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...