有没有一个JavaScript的PHP的urldecode或html_entity_decode()的等价物?
我有一个关联数组在php中,我想坚持到一个隐藏的表单输入,以便我以后可以在JavaScript中获取值。由于引用问题,我需要对json进行urlencode编码,或者对其进行编码。然而,一旦我在javascript中拥有这个对象,最简单的方法是什么让它回到纯粹的'json?有没有一个JavaScript的PHP的urldecode或html_entity_decode()的等价物?
或者有没有更好的方法来解决这个问题? AJAX在这里似乎有点过分 - 我宁愿预先在页面上填充数据,而不是设置多个请求。我想我可以将php对象写入到php生成的脚本标记中的页面中,但这看起来有点麻烦,而且我不确定在每种可能的情况下都会解析[scripts]。
如果您将数据粘贴到某个字段中,则可以使用decodeURIComponent
来解码该值。例如:
decodeURIComponent("%5b'hello'%2c%20'world'%5d"); // ['hello', 'world']
另一个办法可能是嵌入JSON对象在输出PHP一个<script>
元件。你甚至可以将JSON对象作为参数存储在某个地方。
<script>setupData(<?= toJSON(['hello', 'world']) ?>)</script>
当页面加载setupData
将与字面['hello', 'world']
被调用。
给你点头,因为它回答了这个问题,即使我没有变得需要它.... – sprugman 2009-11-17 23:02:22
哦。我想我应该先测试一下。我使用的道场,而这只是工作:
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]);
}
[腼腆地咧嘴一笑]
[Javascript的当量可能重复的HTML \ _entity \ _decode不依赖于innerHTML?](http://*.com/questions/3302353/javascript-equivalent-of-html-entity-decode-that-doesnt-rely-on-innerhtml) – rubo77 2013-11-22 09:50:25