Jquery使用ajax與Flask后端進行數據交互


最近做項目碰到一個坑,jquery使用ajax向flask傳輸數據的時候,在后端采用request.data無論如何都獲取不到數據,代碼如下:

前端:

<script> function checkUser() { var usercookie = $.cookie("validate"); $.ajax({ url: "http://127.0.0.1:5000/checkCookie", type: "POST", data: {'cookie': '123123'}, success: function(data){ console.log(data); }, error: function(err) { console.log("驗證失敗"); } }); } </script>

contentType無論設置成 application/json; charset=UTF-8',還是json,在下列后端測試代碼中都無法獲取數據:

@app.route('/checkCookie', methods=['POST']) def checkCookie(): data = request.data if data : return "success", 200
    else: return "error", 400

但如果將request.data 改為 request.get_data(), 則會直接獲取到GET參數的字節:b'cookie=123123', 當傳入的參數有多個的時候,就會變成a=123&b=234這樣的形式,這肯定不是我們想要的,處理起來會很麻煩。所以搞半天最后改成以下的形式,可以直接獲取到json的形式,這樣后端處理就方便很多了:

前端:

<script> function checkUser() { var usercookie = $.cookie("validate"); Udata = JSON.stringify({"Uid": usercookie}); $.ajax({ url: "http://127.0.0.1:5000/checkCookie", type: "POST", contentType: 'application/json; charset=UTF-8', data: Udata, success: function(data){ console.log(data); }, error: function(err) { console.log("驗證失敗"); } }); } </script>

后端:

@app.route('/checkCookie', methods=['POST']) def checkCookie(): data = request.get_json() if data: return "success", 200
    else: return "error", 400

這樣更改以后,后端能直接獲得前端發送的json數據,並且通過get_json()方法能直接得到json格式的數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM