我在通过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库对其进行反序列化,但我只会遇到错误。
请帮忙吗?
答案 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
的变量传递到您的服务器。