2017-05-31 80 views
0

我試圖通過POST請求發送一個字典,其中鍵是int的,值是列表,但是當服務器上接收到字典時,int的值已被轉換爲unicode並且按鍵的末尾有括號。奇怪的行爲,POST將括號添加到int值

快譯通,再發錶快譯通後

{157: ['foo', 'bar'], 154: ['foo']} 

POST

{'157[]': ['foo', 'bar'], '154[]': ['foo']} 

Ajax代碼

$.ajax({ 
    url: url, 
    type: 'POST', 
    dataType: 'json', 
    data: dict, 
    ... 
}); 

如何我接收到的數據

dict = request.POST 

然後我循環它與dict.iteritems()

有誰知道爲什麼那些括號後有POST?

回答

1

數組在URL編碼參數中的表示在參數名稱後面使用[]。如果你有這樣一個參數:

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

它的編碼爲:

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

這怎麼獲取服務器上的解碼依賴於語言和/或框架。當它生成$_POST$_GET的密鑰時,PHP會自動刪除[]。顯然Python不會這樣做,所以字典鍵附加了[]

+0

謝謝!現在我不必花費數小時試圖找到解決這個問題的「官方」方法,並且可以直接手動刪除括號。 – SirParselot