2017-05-31 8 views
0

キーがintで値がリストであるdictを送信しようとしていますが、サーバー上でdictを受け取ったときにintがユニコードに変換されましたキーの末尾に角括弧が付きます。POSTが奇妙な動作をすると、int値に角括弧が追加される

はPOST

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

DictのAjaxコード

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

POST

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

はどうやってデータを受信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

関連する問題