serializeArray по-другому (из PHP foreach) - PullRequest
2 голосов
/ 27 сентября 2019

Я хочу POST через AJAX мою форму:

<form id="form_export">
<?php
foreach( $visitors as $k => $v )
{
    ?>
     <input type="hidden" name="<?php echo $k ?>" value="<?php echo htmlspecialchars( $v ) ?>">
    <?php
}
?>
</form>

Вот мой AJAX:

$('#form_export').submit(function(e)
{
    e.preventDefault();


    var visitors = $(this).serializeArray();


    $.ajax({
        type      : 'POST',
        url       : '/ajax/ajax-export.php',
        data      : {visitors:visitors},
        beforeSend: function()
        {
            $('.preloader').css('display', 'block');
        },
        success   : function(resp)
        {
            $('.preloader').css('display', 'none');
            $('.message').html(resp);
        }
    })
})

Проблема в том, что когда я отправляю сообщения через AJAX, я использую.serializeArray() и результат выглядит следующим образом:

[visitors] => Array
    (
        [0] => Array
            (
                [name] => jumps
                [value] => bonding
            )

        [1] => Array
            (
                [name] => name
                [value] => SomeName
            )

        [2] => Array
            (
                [name] => surname
                [value] => SomeSurname
            )

        [3] => Array
            (
                [name] => firm
                [value] => SomeFirm
            )
        ...
    )

Я попробовал плагин serializeForm.js, и формат почти нормальный, но он дает мне только последнего посетителя (не всех):

   [visitors] => Array
    (
        [jumps] => bonding
        [name] => SomeName
        [surname] => SomeSurname
        [firm] => SomeFirm
        ...
    )
    // END

Ожидаемый результат должен быть следующим:

   [visitors] => Array
   (
        [0] => Array
        (
            [jumps] => bonding, 
            [name] => SomeName,
            [surname] => SomeSurname,
            [firm] => SomeFirm,
            ...
        )
        [1] => Array
        (
            [jumps] => bonding,
            [name] => SomeSecondName,
            [surname] => SomeSecondSurname,
            ...
         )
         ...
   )

Количество столбцов может варьироваться в зависимости от предпочтений пользователя.(Мне нужно создать таблицу из этих данных, поэтому я хочу этот формат данных).

1 Ответ

0 голосов
/ 27 сентября 2019

Попробуйте этот пакет: jQuery Serialize Object

Это действительно легко использовать:

$(this).serializeJSON(); // to get the form as a JS object

Впоследствии в PHP вы можете использовать json_decode со вторым параметром true, чтобы получить данные в виде массива так, как вы хотите.

...