J'ai besoin de stocker certaines entrées dans un champ caché. Ainsi, lorsque j'imprime la post-demande, je reçois:
Array ( [0]=>1 [1]=>2 [2]=>3 )
J'ai déjà essayé:
var elems = [];
elems.Push['1'];
elems.Push['2'];
elems.Push['3'];
$('#input_hidden_field').val(elems);
Mais ça ne marche pas, n'importe qui pourrait m'aider avec ça?
Vous pouvez analyser votre tableau dans une chaîne JSON pour le stocker:
.Push()
est une fonction, elle a donc besoin de ()
et pas le []
tableau-syntaxe.
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);
Pour créer un objet, il suffit de changer la définition de elems
et le stockage des valeurs:
var elems = {};
elems[0] = '1';
elems[1] = '2';
elems[2] = '3';
Référence
Une meilleure approche serait d’ajouter une nouvelle donnée de formulaire pour chaque valeur d’un tableau.
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']);
}
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);