我试图通过POST请求发送一个dict,其中键是int并且值是列表但是当在服务器上接收到dict时,int已被转换为unicode和键的末尾有括号。
POST前的Dict
{157: ['foo', 'bar'], 154: ['foo']}
POST后的Dict
{'157[]': ['foo', 'bar'], '154[]': ['foo']}
ajax代码
$.ajax({
url: url,
type: 'POST',
dataType: 'json',
data: dict,
...
});
我如何收到数据
dict = request.POST
然后我用dict.iteritems()
有人知道POST后那些括号的原因吗?
答案 0 :(得分:1)
URL编码参数中数组的表示在参数名称后面使用[]
。如果你有一个参数,如:
param: [ "value1", "value2", "value3" ]
它被编码为:
param[]=value1¶m[]=value2¶m[]=value3
如何在服务器上解码它取决于语言和/或框架。 PHP会在[]
或$_POST
生成密钥时自动删除$_GET
。显然Python不会这样做,所以字典键附加了[]
。