通过URL传递复杂数据

时间:2009-12-22 20:26:35

标签: html json data-structures standards

我正在考虑使用类似的东西:

<script src="http://www.example.com/?key={"param":"value"}">

正如您在上面的示例中所看到的,正在通过src URL传递JSON格式的字符串。当然,该示例不起作用,因为JSON字符串和脚本标记都使用双引号。

以下是我能想到的一些解决方案:

  1. 在脚本代码中使用单引号。问题 - 在所有其他标签都使用双引号的页面中看起来不太好。

  2. 使用&quot;代替“。问题 - 使src网址难以阅读。

  3. 使用不使用双引号的JSON数据交换格式的替代方法。问题 - 我想不出一个好的候选人。

  4. 您怎么看?

5 个答案:

答案 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属性区分开来。