flask app中從前端接受json的數據,但是flask的request中並沒有接受成功,其中沒有數據,換了很多函數都行不通。
js程式碼
$(function(){
$("#test").click(function(){
$.ajax({
url: "{{ url_for('main.getjson') }}",
type: "POST",
data: JSON.stringify({
"n1": "test1",
"n2": "test2",
"n3": "test3"
}),
dataType: "json",
success: function(data){
var a = data.user
var texthtml = "<p>" + a + "</p>"
$("#result").html(texthtml)
}
});
});
});
flask中的視圖函數:
@main.route('/getjson', methods = ['GET', 'POST'])
def getjson():
a = request.json
if a:
return jsonify(user = "Right")
return jsonify(user = "error")
只是判斷request.json是不是存在,但是回傳來的總是「error」的字串。 request.json中總是null。後來換了request.args.get(),同樣行不通。到底是哪裡出錯了,真心求教。
找到答案了,只是在jquery部分出了問題。 $.ajax的參數contentType,預設是 "application/x-www-form-urlencoded",需要把這個參數設定成application/json。
參考:https://flask.readthedocs.io/...
http://stackoverflow.com/ques...
jquery的ajax發送data的時候不需要JSON.stringify.他會自動處理.
根據你的描述,你的已經把問題找到了,為什麼不繼續嘗試一下,或者看下文檔
輸出結果
request.json很奇葩,確實沒數據,但它是可以用的,你這裡沒用的原因如下:
所以我只是成功使用過一次request.json,後來再也沒有成功過,因為它很神奇,如果可以找一個替代request.json吧。