добавьте дополнительные массивы в сериализованные данные формы для отправки через AJAX - PullRequest
0 голосов
/ 31 января 2019

У меня есть форма, которую я отправляю, используя AJAX.Чтобы получить данные из формы в сценарий PHP, я сериализую данные.В дополнение к этим данным я хотел бы включить еще один массив из динамических данных, поступающих извне формы.Вот пример того, что у меня есть:

$(function() {
  var $form = $('form'),
      formData = $form.serializeArray(),
      arr = ["Saab", "Volvo", "BMW"]; /* Just an example array */
  
  formData.push({name: 'dynamic-array', arr});
  
  console.log(formData);
  
  /*
  $.ajax({
    type: 'POST',
    url: 'http://example.com',
    data: formData
  }).done(function() {
    console.log('Submitted');
  });
  */
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <input name="name" type="text" value="Lorem" />
  <input name="number" type="text" value="Ipsum" />
</form>

Поэтому, когда я консольный журнал formData после отправки массива в сериализованные данные формы, он правильно показывает этот дополнительный массив.Однако, когда я пытаюсь print_r($_POST) в моей форме PHP, дополнительный массив не доступен:

Array ( [name] => Lorem [number] => Ipsum [dynamic-array] => )

dynamic-array не имеет связанного с ним массива.

Как правильно это сделать?

1 Ответ

0 голосов
/ 31 января 2019

Формат сериализованного массива, возвращенного из serializeArray, представляет собой массив объектов со свойством key, которое содержит имя ключа, и свойством value, которое содержит значение.Ваш новый объект не имеет ключа value, поэтому он не обрабатывается должным образом на бэкэнде.Попробуйте {name: 'dynamic-array', value: arr} вместо.

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