簡體   English   中英

Flask 不使用 request.json 返回 JSON 數據

[英]flask does not return JSON data using request.json

我想將輸入元素的文本內容作為 json 類型發送到燒瓶並打印出值
但是 print 的輸出是None

發送數據我使用了 JQuery post 方法

function upload_postdata() {
    let input_text = $("#input_element").val();
    return $.post('/upload_columns',{
        contentType: "application/json; charset=utf-8",
        data: input_text
    });
}

路線是

@flask_class.route('/upload_columns', methods=['POST'])
def upload_columns():
    date_from = request.json #
    print(f"the name is{date_from}")
    return jsonify(" polo")

閱讀文檔request.json應該返回解析的 JSON 數據。

瀏覽器的 Header 部分也告訴我

contentType: application/json
data: Marco

那么為什么我使用request.json得到 None 作為回報?

使用request.form['data']給了我正確的輸出

兩個問題。 一是您將$.post的語法與$.ajax的語法混合在一起。 $.ajax接受datacontentType參數作為選項對象中的字段; $.post不同的方式做事,並期望將數據作為第二個參數發布。 因此,您不發送任何內容類型標頭,並且您的數據是兩個字段,其中之一名為data 這就是request.form["data"]讀取它的原因。 它不是 JSON,它是在 URL 編碼中編碼的,例如:

contentType=application%2Fjson%3B%20charset%3Dutf-8&data=Marco

如果您改用$.ajax ,它仍然不起作用,因為 jQuery 不會自動將data轉換為 JSON,而且Marco不是有效的 JSON — "Marco"是。 要將響應轉換為有效的 JSON,您需要使用

data: JSON.stringify(input_text)

有了這個,有效載荷變得簡單

"Marco"

它不能再被request.form["data"]解析,但應該使用request.jsonMarco

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM