为什么jQuery.getJSON()展平我的javascript字典?

时间:2012-02-14 20:22:25

标签: javascript python json pyramid

我在通过jQuery.getJSON()方法将javascript字典传输到我的服务器时遇到了很大的问题。我在jscript中声明了这个词典:

data = {'a': 1, b:{'c':2, 'd':3}};

我打电话的时候:

jQuery.getJSON("myurl", data, callback)

服务器收到包含以下值的字典:

{'a':1, 'b[c]':2, 'b[d]':3}.

请注意,通过组合''来缩小子词典。密钥与子键' c'并且' d'。这对于高度嵌套的数据来说非常令人讨厌。

我承认我不确定这是否是javascript和JSON序列化的问题,或者它是否必须与Python和Pyramid(接收数据的Web框架)有关。我在发送数据之前尝试过字符串化,并且使用Python的json库对其进行反序列化,但我只会遇到错误。

请帮忙吗?

1 个答案:

答案 0 :(得分:2)

发送数据的方式是正确的。

数据字段旨在通过HTTP发送数据。如果您通过HTTP get发送,您将在查询字符串中看到参数。

myurl?a=1&b%5Bc%5D=2&b%5Bd%5D=3

未转义的网址:

myurl?a=1&b[c]=2&b[d]=3

如果要将JSON发送到服务器,则需要对其进行字符串化。使用JSON.stringify()您需要包含一个JSON库以支持IE8之前的版本。

您需要将字符串化数据分配给变量。

jQuery.getJSON("myurl",{data: JSON.stringify(data)}, callback);

这将通过名为data的变量传递到您的服务器。