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

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

本文关键字:我的 javascript 字典 扁平化 jQuery getJSON 为什么      更新时间:2023-09-26

我在通过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"answers"d"组合来展开的。对于高度嵌套的数据来说,这是非常令人讨厌的。

我承认,我不确定这是javascript和JSON序列化的问题,还是接收数据的网络框架Python和Pyramid的问题。在发送数据之前,我尝试过字符串化,也尝试过使用Python的json库对其进行反序列化,但只收到错误。

有什么需要帮忙的吗?

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

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

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

无标题URL:

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

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

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

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

这将在一个名为data的变量中传递给您的服务器。