2016-11-24 23 views
-1

我想使用jQuery將JSON數據發送給Flask路由。但是,request.get_json()提供了一個錯誤。爲什麼這不起作用?使用jQuery發送JSON給Flask給出錯誤

my_array = {"student_data":{"actual_data":12,"sheet_data":23,"age":"20"},"teacher_data":{"actual_data":193,"sheet_data":203,"age":"40"},"school_data":{"actual_data":593,"sheet_data":29,"age":"49"}}; 
$.ajax({ 
    url: '/submit_method', 
    data: my_array, 
    contentType: 'application/json; charset=utf-8', 
    type : 'GET',       
    async: 'false', 
    success: function (serverResponse) {   
    } 
}); 
@app.route('/submit_method', methods=['GET']) 
def submit_method(): 
    k = request.get_json() 
    return '' 

回答

0

你必須使用POST方法,而不是GET的。

@app.route('/submit_method', methods=['POST']) 
    def submit_method(): 
     k = request.data  # gets request body in form of dictionary 
     return json.dumps(k) # converts dictionary to json 


    $.ajax({ 
    url: '/submit_method', data: JSON.stringify(my_array), 
    contentType:"application/json; charset=utf-8", 
    type : 'POST', async: "false", success : function (serverResponse) {}}); 
0

的問題是JavaScript有使用JSON.stringify被轉換成一個JSON字符串第一,。否則Flask將不會考慮應用程序/ json內容類型並拒絕400的請求。

$.ajax({ 
    url: '/submit_method', 
    data: JSON.stringify(my_array), 
    contentType: 'application/json; charset=utf-8', 
    type : 'GET',       
    async: 'false', 
    success: function (serverResponse) {   
    } 
});