Javascript - 在隐藏字段中存储对象数组

时间:2015-03-16 11:57:39

标签: jquery arrays object post serialization

我需要在隐藏字段中存储一些输入,所以当我打印后请求时,我得到:

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

我已经尝试过:

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

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

但它不起作用,任何人都可以帮我这个吗?

4 个答案:

答案 0 :(得分:63)

您可以将数组解析为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';

Demo

<强>参考

.stringify()

.parse()

答案 1 :(得分:1)

更好的方法是为数组中的每个值附加一个新的formdata。

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 :(得分:1)

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

答案 3 :(得分:0)

对于简单的字符串数组,只需相应地使用 html 名称标签:

<input name="input_hidden_field[]"/>

这只会连接输入中的值,并在检索时返回一个数组

$('name="input_hidden_field[]"']).val()