Javascript – Armazenando a matriz de objects no campo oculto

Eu preciso armazenar alguma input em um campo oculto, então quando eu imprimir o post-request, recebo:

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

Eu já tentei:

 var elems = []; elems.push['1']; elems.push['2']; elems.push['3']; $('#input_hidden_field').val(elems); 

Mas isso não funciona, alguém poderia me ajudar com isso?

Você pode analisar sua matriz em uma string JSON para armazená-la:

.push() é uma function, portanto, precisa de () e não a syntax da matriz [] .

 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); 

Para criar um object basta alterar a definição de elems e o armazenamento dos valores:

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

Demonstração

Referência

.stringify ()

.parse ()

Uma abordagem melhor seria append um novo formdata para cada valor dentro de um array.

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

 

PHP

  

JS

 var elems = []; elems.push['1']; elems.push['2']; elems.push['3']; $('#input_hidden_field').val(JSON.stringify(elems)); 

PHP

 $elems = json_decode($_POST['hidden_input_name'], true);