web-dev-qa-db-ja.com

Javascript-非表示フィールドにオブジェクトの配列を保存する

非表示フィールドに入力を保存する必要があるため、ポストリクエストを印刷すると、次のようになります。

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

私はすでに試しました:

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

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

しかし、それは動作しません、誰もこれで私を助けることができますか?

25
Adam Sasin

配列を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()

65
empiric

より良いアプローチは、配列内の各値に新しいフォームデータを追加することです。

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']); 
   }
2
Digelim

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);
1
K15.Multik