我正在考虑使用类似的东西:
<script src="http://www.example.com/?key={"param":"value"}">
正如您在上面的示例中所看到的,正在通过src URL传递JSON格式的字符串。当然,该示例不起作用,因为JSON字符串和脚本标记都使用双引号。
以下是我能想到的一些解决方案:
在脚本代码中使用单引号。问题 - 在所有其他标签都使用双引号的页面中看起来不太好。
使用"
代替“。问题 - 使src网址难以阅读。
使用不使用双引号的JSON数据交换格式的替代方法。问题 - 我想不出一个好的候选人。
您怎么看?
答案 0 :(得分:1)
您应该使用encodeUriComponent然后解码服务器上的值(您在服务器上使用的是哪种语言?)。
答案 1 :(得分:1)
数据需要有多复杂?如果它只是键值对,那么为什么不使用普通的表格URL编码?
<script src="http://www.example.com/?param=value&otherparam=othervalue">
答案 2 :(得分:1)
查看Google Charts网址的结构方式 - 它们提供了一些非常好的提示。
答案 3 :(得分:1)
另一种选择是urlencode只是JSON部分。我不确定你是如何构建这些URL的,但是如果它是手工的话,那就采取:
{"param":"value",{[{"param":"value","param":"value"},{"param":"value","param":"value"}]}}
在Firebug中对该字符串调用“escape”,它会给你:
%7B%22param%22%3A%22value%22%2C%7B%5B%7B%22param%22%3A%22value%22%2C%22param%22%3A%22value%22%7D%2C%7B%22param%22%3A%22value%22%2C%22param%22%3A%22value%22%7D%5D%7D%7D
所以你有一个脚本URL,如:
<script src="http://www.example.com/?key=%7B%22param%22%3A%22...
这些百分比十六进制代码会被Web服务器转回实际字节,因此您可以继续使用JSON解析“key”GET参数并使用一个漂亮的哈希/数组嵌套结构。
答案 4 :(得分:0)
在类似的解决方案中,单引号很好,所以我建议这样做。
这个解决方案的优点在于它使用双引号将变量与HTML属性区分开来。