2009-12-22 33 views
0

我在考虑使用类似:传递复杂的数据在URL优雅

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

正如你在一个JSON格式的字符串越过src网址上面看到的例子。当然,该示例不起作用,因为JSON字符串和脚本标记都使用双引号。

这里是我能想到的几个解决方案:

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

  2. 使用&quot;而不是”的问题 - 使src网址很难读

  3. 使用JSON数据交换格式,另一种不使用双引号的问题 - 我不能认为一个好的候选人。

你觉得呢?

回答

1

您应该使用encodeUriComponent然后解码服务器上的值(您在服务器上使用哪种语言?)。

+0

感谢您的好建议!不过,我正在寻找一种不使用JavaScript的解决方案。 –

+0

我假设你正在使用javascript(它是JSON)构建src。如果你不使用JavaScript,那么你在用什么?这是否在服务器上生成?它是为了什么? (我问,因为我可能有另一种选择)。 –

+0

脚本标签将由Flash应用程序生成,并将用于嵌入网站小工具/组件。Flash动作脚本和javascript之间的通信是可能的,最终我可以使用你建议的方法,但我更喜欢没有JavaScript解决方案。 –

0

在类似的解决方案,单引号是罚款,所以我建议。

这个解决方案的好处在于,它将变量与HTML属性用双引号区分开来。

1

数据有多复杂?如果它只是键值对,那么为什么不使用普通的表单URL编码呢?

<script src="http://www.example.com/?param=value&otherparam=othervalue"> 
+0

它变得足够复杂。在某些时候,它会变成{“param”:“value”,{[{“param”:“value”,“param”:“value”},{“param”:“value”,“param”:“值“}]}} –

1

另一种选择是urlencode只是JSON部分。我不知道你是如何构建这些网址,但如果它是由手刚搭:

{"param":"value",{[{"param":"value","param":"value"},{"param":"value","param":"value"}]}} 

而且在Firebug呼吁该字符串“逃离”,它给你:

%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-解析“键” GET参数有一个很好的哈希/数组嵌套 结构体。

+0

谢谢!这是一个有趣的方法。然而,对于我所要求的目的而言,URL很容易被人读取,这一点很重要。 –