1

我在 php 中有一个关联数组,我想将其粘贴到隐藏的表单输入中,以便以后可以在 javascript 中获取值。由于引用问题,我需要对 json 进行 urlencode 或 htmlentity。但是,一旦我在 javascript 中有对象,将其恢复为普通 ol'json 的最简单方法是什么?

或者有没有更好的方法来解决这个问题?AJAX 在这里似乎有点矫枉过正——我宁愿在页面上预先填充数据,而不是设置多个请求。我想我可以将 php 对象写入 php 生成的脚本标记内的页面,但这似乎有点混乱,而且我不确定 [scripts] 是否会在可能使用它的所有可能情况下被解析。

4

2 回答 2

3

如果您将数据粘贴在一个字段中,您可以使用它decodeURIComponent来解码该值。例子:

decodeURIComponent("%5b'hello'%2c%20'world'%5d"); // ['hello', 'world']

另一种方法可能是将 JSON 对象嵌入到<script>PHP 输出的元素中。您甚至可以将 JSON 对象作为将其存储在某处的函数的参数。

<script>setupData(<?= toJSON(['hello', 'world']) ?>)</script>

当页面加载时,setupData将使用文字调用['hello', 'world']

于 2009-11-17T22:40:05.523 回答
1

哦。我想我应该先测试一下。我正在使用道场,这只是工作:

PHP:

$arr = array('nyc'=>'big apple', 'boss'=>'big banana', 'lion'=>'big cat');
$json = htmlentities(json_encode($arr));
echo '<input type="hidden" id="myHidden" value="' . $json . '" />';

Javascript:

var raw = dojo.byId('myHidden').value;
var arr = dojo.fromJson(raw);
for (var i in arr) {
    console.log(i + " => " + arr[i]);
}

[傻笑]

于 2009-11-17T22:57:33.997 回答