繁体   English   中英

为什么jQuery.getJSON()使我的javascript字典扁平化?

[英]Why is jQuery.getJSON() flattening my javascript dictionary?

通过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}.

请注意,通过将“ b”键与子键“ c”和“ d”组合在一起,对子词典进行了扁平化处理。 这对于高度嵌套的数据来说非常令人讨厌。

我承认我不确定这是否与javascript和JSON序列化有关,还是与Python和Pyramid(接收数据的网络框架)有关。 我曾尝试在发送数据之前进行字符串化,以及使用Python的json库反序列化它,但我只会遇到错误。

有什么帮助吗?

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

数据字段旨在通过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的变量中传递给您的服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM