我在php中有一个关联数组,我想要隐藏在一个隐藏的表单输入中,这样我以后可以在javascript中获取值。由于引用问题,我需要urlencode json,或htmlentity它。但是,一旦我在javascript中拥有了这个对象,那么最简单的方法是将它恢复为普通的'json?
或者有更好的方法来解决这个问题吗? AJAX在这里似乎有些过分 - 我宁愿预先填充页面上的数据,而不是设置多个请求。我想我可以将php对象写入php生成的脚本标记内的页面,但这看起来有点混乱,我不确定[脚本]是否会在可能使用它的每种可能情况下进行解析。 / p>
答案 0 :(得分:3)
如果您将数据粘贴到字段中,则可以使用decodeURIComponent
对值进行解码。例如:
decodeURIComponent("%5b'hello'%2c%20'world'%5d"); // ['hello', 'world']
另一种方法可能是将JSON对象嵌入PHP输出中的<script>
元素中。您甚至可以将JSON对象作为将其存储在某处的函数的参数。
<script>setupData(<?= toJSON(['hello', 'world']) ?>)</script>
当页面加载时,setupData
将使用文字['hello', 'world']
进行调用。
答案 1 :(得分:1)
喔。我想我应该先测试一下。我正在使用dojo,这就是Just Works:
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]);
}
[羞怯的笑容]