隐藏变量中的数组更改为字符串

时间:2013-08-14 13:05:56

标签: php javascript html

我正在使用JavaScript将数组设置为隐藏字段。但是,问题是当我使用PHP捕获它时,数组会在表单提交时转换为字符串。

这是设置隐藏输入字段值的代码:

document.getElementById("hiddenFieldId").value = arrayFromJS;

有没有解决方法呢?

实际上问题是早些时候我有一个选择框,它在表单提交上很好地发送了它的值。但是现在我有一个使用JS的自定义选择框,它在隐藏字段中设置逗号分隔值...简而言之,我希望输入字段像伪选择框一样

1 个答案:

答案 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