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]);
<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 数组?
如何将 SAFEARRAY(字节数组)放入 HTML 隐藏字段