我想将PHP变量传递给Javascript,而不触发任何新的http请求(又名:直接插入标记)。但我想要的内容如(没有任何可能改变我的价值的消毒,即使它们在标记本身)。当然,我也想保持安全。这会有什么副作用吗?
我已经想出了迄今为止最好的方法包括JSON + BASE64_ENCODE +数据URI方案:
<script type="text/javascript" src="data:text/javascript;base64,<?php echo base64_encode('var thing = '.json_encode($thing)); ?>"></script>
我的问题是:将这个有什么副作用?我可以安全地使用这个吗?
有一件事情是它不会在IE 7和8中工作,甚至可能不是9。然后我真的不明白这个练习的重点?这实现了什么,简单地插入纯文本JavaScript不? – 2012-02-25 21:48:04
我做了一些非常相似的事情(JSON/base64),在我的情况下,它是用一个URL参数发送复杂的数据客户端 - >服务器。它运行良好。 – 2012-02-25 21:49:25
但是对于你的情况,如果你的JSON编码字符串,你应该能够直接将它放入标记中,它不需要编码或转义(JSON编码实际上为你逃脱任何字符串)。 – 2012-02-25 21:50:37