奇怪的行为,POST为int值添加了括号

时间:2017-05-31 23:09:18

标签: jquery python ajax request

我试图通过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后那些括号的原因吗?

1 个答案:

答案 0 :(得分:1)

URL编码参数中数组的表示在参数名称后面使用[]。如果你有一个参数,如:

param: [ "value1", "value2", "value3" ]

它被编码为:

param[]=value1&param[]=value2&param[]=value3

如何在服务器上解码它取决于语言和/或框架。 PHP会在[]$_POST生成密钥时自动删除$_GET。显然Python不会这样做,所以字典键附加了[]