2009-11-17 171 views
1

我有一个关联数组在php中,我想坚持到一个隐藏的表单输入,以便我以后可以在JavaScript中获取值。由于引用问题,我需要对json进行urlencode编码,或者对其进行编码。然而,一旦我在javascript中拥有这个对象,最简单的方法是什么让它回到纯粹的'json?有没有一个JavaScript的PHP的urldecode或html_entity_decode()的等价物?

或者有没有更好的方法来解决这个问题? AJAX在这里似乎有点过分 - 我宁愿预先在页面上填充数据,而不是设置多个请求。我想我可以将php对象写入到php生成的脚本标记中的页面中,但这看起来有点麻烦,而且我不确定在每种可能的情况下都会解析[scripts]。

+0

[Javascript的当量可能重复的HTML \ _entity \ _decode不依赖于innerHTML?](http://stackoverflow.com/questions/3302353/javascript-equivalent-of-html-entity-decode-that-doesnt-rely-on-innerhtml) – rubo77 2013-11-22 09:50:25

回答

3

如果您将数据粘贴到某个字段中,则可以使用decodeURIComponent来解码该值。例如:

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

另一个办法可能是嵌入JSON对象在输出PHP一个<script>元件。你甚至可以将JSON对象作为参数存储在某个地方。

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

当页面加载setupData将与字面['hello', 'world']被调用。

+0

给你点头,因为它回答了这个问题,即使我没有变得需要它.... – sprugman 2009-11-17 23:02:22

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]); 
} 

[腼腆地咧嘴一笑]

相关问题