2016-01-20 34 views
0

我正在使用jQuery dataTables插件。當我POST向服務器請求數據時,dataTables提供了大量關於排序,搜索值(如果有)和列元數據的信息。dataTables flattens JSON數據上POSTing,如何解碼成python字典

使用鉻調試器,我看到準備的數據在POST請求(dataTables對象內以下代碼段從)發送是適當地形成JSON對象

"ajax": { // define ajax settings 
    ... 
    "type": "POST", // request type 
    "timeout": 20000, 
    "data": function(data) { // add request parameters before submit  
     $.each(ajaxParams, function(key, value) { 
      data[key] = value; 
     }); 
     var data = JSON.stringify(data); // here, the data is properly formed JSON. I tried stringifying it to no avail 
    }, 

我認爲在服務器上(使用Python & Flask),我看到數據如下所示(我使用了PyCharm的屏幕截圖,因此您可以看到數據如何傳遞的細節)。

enter image description here

到目前爲止,我曾嘗試與服務器上的jsonformencode模塊玩,並試圖從客戶端發送前字符串化的數據,但沒有任何變化。服務器上的數據類型是Werkzeug CombinedMultiDict,但我認爲在這一點上並不重要。

回答

1

在阿賈克斯設置:

type: "POST", 

data: data, 

dataType: "json", 

contentType: "application/json;charset=utf-8", 

,然後在瓶中只需使用:

import json 

... 

data = jsonify(request.get_json(force=True)) 
+0

我想你的解決方案,現在'request.values'是空的, 'request.data' 包含以下字符串:'draw = 1&columns%5B0%5D%5Bdata%5D =&column%5B0%5D%5Bname ...'where'&'=',','%5B' ='[','%5D' = ']'如果匹配到原始'request.values' –

+0

請確保JSON請求中的'data'是格式正確的JSON,然後在flask中使用request.get_json而不是request.data,如圖所示即看看http://flask.pocoo.org/docs/0.10/api/上的get_json()方法的文檔。 –