Опубликовать массив с плагином ajaxForm - PullRequest
0 голосов
/ 16 апреля 2019

Я использую этот плагин -> http://jquery.malsup.com/form/

Но я не могу опубликовать массив в сценарии PHP.

Я пробовал это в функции beforeSubmit:

var concepts = new Array();
$('#myTable tbody tr td span.file').each(function(){
  concepts.push($(this).text());
});
arr.push({name: 'concepts',value:concepts});

И это в параметре данных:

data: {
  concepts: function(){
    var concepts = new Array();
    $('#myTable tbody tr td span.file').each(function(){
      concepts.push($(this).text());
    });
    return concepts;
  }
}

Но в PHP-скрипте я всегда получаю строку, разделенную запятыми, а не массив, как в любом вызове ajax.

[concepts] => 20 Bafles J8 DB Line Array, 4 Bafles J12 DB Line Array, 10 Bafles J SUB, 12 Bafles B2 DB, 2 Bummpers J, 4 Bafles Q7 DB Front Fill, 12 Monitores M4 DB, 38 Amplificadores, Sub Snake, 6 Bafles Q1 DB Side Fill, 6 Bafles Q SUB DB, Centro de Carga,Andamio de 4 mts. de altura brandeados por los 4 lados con lona mesh a 1,200 dpis

Выше приведен результат:

print_r($_POST)

В этом примере массив имеет 2 элемента.

Но мои опубликованные данные содержат запятые. Я знаю, что могу кодировать в JSON, а затем декодировать внутри сценария PHP, но я предпочитаю отправлять и получать массив. Есть ли способ добиться этого?

Я пытался использовать processData как false, и ничего: (

Заранее спасибо!

1 Ответ

0 голосов
/ 16 апреля 2019

В вашем примере для функции beforeSubmit вы, кажется, выдвигаете несколько значений под одним и тем же входным именем, не объявляя его как массив (если это имеет смысл).Смотрите обновленный пример:

var concepts = new Array();
$('#myTable tbody tr td span.file').each(function(){
  concepts.push($(this).text());
});

// Added square brackets to the `name` attribute
arr.push({name: 'concepts[]',value:concepts});

Если это не сработает, я бы попытался отправить данные на сервер без плагина ajaxForm().Например:

$('form').on('submit', function() {
    var data = $(this).serializeArray();

  $('#myTable tbody tr td span.file').each(function(){
    data.push({name: 'concepts[]', value: $(this).text()});
  });

  $.ajax({
    url: '/post/endpoint/example', // Change me!
    method: 'post',
    data: data
  });

  return false;

});

Если публикация без плагина работает, то я бы предположил, что плагин пытается быть слишком умным и выполняет какую-то странную сериализацию с данными формы.

...