[英]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
接受data
和contentType
參數作為選項對象中的字段; $.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.json
給Marco
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.