我正在使用JavaScript将数组设置为隐藏字段。但是,问题是当我使用PHP捕获它时,数组会在表单提交时转换为字符串。
这是设置隐藏输入字段值的代码:
document.getElementById("hiddenFieldId").value = arrayFromJS;
有没有解决方法呢?
实际上问题是早些时候我有一个选择框,它在表单提交上很好地发送了它的值。但是现在我有一个使用JS的自定义选择框,它在隐藏字段中设置逗号分隔值...简而言之,我希望输入字段像伪选择框一样
答案 0 :(得分:1)
你应该JSON编码/解码值:
在客户端,您使用JSON.stringify
对数组进行编码:
document.getElementById("hiddenFieldId").value = JSON.stringify(arrayFromJS);
然后在服务器端,您可以使用json_decode
:
$arr = json_decode($_POST['hiddenFieldId']); // Fetch the data from POST / GET
foreach ( $arr as $value ) {
// iterate the array on the server side.
}
unset($arr); // Remember to unset the $arr variable
如果你知道自己正在处理一个简单的数组(只有字符串),你可以{j}中的join字符串和explode/split它的php:
document.getElementById("hiddenFieldId").value = arrayFromJS.join('/:/');
PHP:
$arr = explode('/:/', $_POST['hiddenFieldId']);
要支持旧浏览器,您可以在前端使用此JSON插件:https://github.com/douglascrockford/JSON-js