Javascript - Сохранение массива объектов в скрытом поле

Мне нужно сохранить некоторый ввод в скрытом поле, поэтому, когда я печатаю пост-запрос, я получаю:

Array ( [0]=>1 [1]=>2 [2]=>3 )

Я уже пробовал:

var elems = [];
elems.push['1'];
elems.push['2'];
elems.push['3'];

$('#input_hidden_field').val(elems);

Но это не сработает, кто-нибудь может мне помочь?

Ответы

Ответ 1

Вы можете проанализировать свой массив в JSON-строку, чтобы сохранить его:

.push() - это функция, поэтому для этого требуется (), а не синтаксис массива [].

var elems = [];
elems.push('1');
elems.push('2');
elems.push('3');

$('#input_hidden_field').val(JSON.stringify(elems)); //store array

var value = $('#input_hidden_field').val(); //retrieve array
value = JSON.parse(value);

Чтобы создать объект, просто измените определение elems и сохраните значения:

var elems = {};
elems[0] = '1';
elems[1] = '2';
elems[2] = '3';

Демо

Ссылка

. stringify()

. parse()

Ответ 2

Лучшим подходом было бы добавление новых формданных для каждого значения в массиве.

JS

var elems = [];
elems.push['1'];
elems.push['2'];
elems.push['3']; 

var fd = new FormData(document.getElementById("myform"));
for (var i = 0; i < elems.length; i++) {
   fd.append('elems[]', elems[i]);
}

HTML

<form action="./post-request.php" method="post" id="myform">
   <input type="hidden" name="elems[]" />
   <button type="submit" name="myarray">SEND</button>
</form>

PHP

<?php 

   if(isset($_POST['myarray']) {
      print_r($_POST['elems']); 
   }