0

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

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

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

有什么解决方法吗?

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

4

1 回答 1

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

如果你知道你正在处理一个简单的数组(只有字符串),你可以在 javascript中加入字符串并在php中分解/拆分它:

document.getElementById("hiddenFieldId").value = arrayFromJS.join('/:/');

PHP:

$arr = explode('/:/', $_POST['hiddenFieldId']);

要支持旧版浏览器,您可以在前端使用此 JSON 插件:https ://github.com/douglascrockford/JSON-js

于 2013-08-14T13:11:00.033 回答