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

Posted

技术标签:

【中文标题】Javascript - 在隐藏字段中存储对象数组【英文标题】:Javascript - Storing array of objects in hidden field 【发布时间】:2015-05-18 12:45:25 【问题描述】:

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

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

我已经试过了:

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

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

但它不起作用,有人可以帮助我吗?

【问题讨论】:

关注***.com/questions/10939840/… 您只能将字符串值分配给输入字段的val。你想在这个领域做什么?你想要格式化的值吗? "1,2,3"? 【参考方案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';

Demo

参考

.stringify()

.parse()

【讨论】:

我需要创建一个对象而不是对其进行字符串化,你能帮我解决这个问题吗? 我们可以将这个 json 字符串传递给控制器​​并在控制器中检索我们的数组吗?如果是,请帮助如何做到这一点 @ZaidQureshi 是的,但这与 OP 无关。所以请随时提交一个新问题(或先研究 SO,关键字 AJAX) 谢谢。觉得很有帮助。【参考方案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']); 
   

【讨论】:

这取决于您的需求,如果这“更好”【参考方案3】:

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

【讨论】:

【参考方案4】:

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

<input name="input_hidden_field[]"/>

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

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

【讨论】:

以上是关于Javascript - 在隐藏字段中存储对象数组的主要内容,如果未能解决你的问题,请参考以下文章

在 MYSQL 数据库中存储包含对象的 javascript 数组?

JavaScript Array(数组)对象

如何将 SAFEARRAY(字节数组)放入 HTML 隐藏字段

javascript的数组

如何在Javascript中选择对象内的数组内的字段[重复]

JavaScript经常使用对象