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