Flask学习总结笔记(12) -- 利用ajax进行前后端数据交互

2 篇文章 0 订阅

Web应用基于ajax进行前后端数据交互,一般利用Get或者Post方式来实现。比较流行的做法是前端提交表单数据,后端处理完毕后返回Json数据到前端进行显示。

0x01 Get提交

(1)前端:

<script src="{{url_for('static',filename='js/jquery.js')}}"></script>
<!--Get请求-->
<script>
    var data={
        'name':'kikay',
        'age':18
    }
    $.ajax({
        type:'GET',
        url:'{{url_for("test.test_get")}}',
        data:data,
        dataType:'json',//希望服务器返回json格式的数据
        success:function(data){
            alert(JSON.stringify(data));
            alert(data['test'])
        }
    });
</script>

(2)后端:

@test.route('/test_get/',methods=['POST','GET'])
def test_get():
    #获取Get数据
    name=request.args.get('name')
    age=int(request.args.get('age'))
    #返回
    if name=='kikay' and age==18:
        return jsonify({'result':'ok'})
    else:
        return jsonify({'result':'error'})

抓包:

0x02 Post方式

(1)前端:

<script src="{{url_for('static',filename='js/jquery.js')}}"></script>
<!--Post请求-->
<script>
    var data={
        'name':'kikay',
        'age':18
    }
    $.ajax({
        type:'POST',
        url:'{{url_for("test.test_post")}}',
        data:data,
        dataType:'json',//希望服务器返回json格式的数据
        success:function(data){
            alert(JSON.stringify(data));
        }
    });
</script>

(2)后端:

@test.route('/test_post/',methods=['POST','GET'])
def test_post():
    #获取POST数据
    name=request.form.get('name')
    age=int(request.form.get('age'))
    #返回
    if name=='kikay' and age==18:
        return jsonify({'result':'ok'})
    else:
        return jsonify({'result':'error'})

抓包:

0x03 Json提交

(1)前端:

如果前端要向后端提交Json格式的数据,需要设置content-type参数为application/json,并且将data参数设置为字符串形式。

<script src="{{url_for('static',filename='js/jquery.js')}}"></script>
<!--Json-->
<script>
    var data={
        'name':'kikay',
        'age':18
    }
    $.ajax({
        type:'POST',
        url:'{{url_for("test.test_json")}}',
        data:JSON.stringify(data),  //转变传递的参数为字符串格式
        contentType:'application/json; charset=UTF-8', //指定传递给服务器的是Json格式数据
        dataType:'json',//希望服务器返回json格式的数据
        success:function(data){
            alert(JSON.stringify(data));
        }
    });
</script>

(2)后端:

@test.route('/test_json/',methods=['POST','GET'])
def test_json():
    #获取JSON数据
    data=request.get_json()
    name=data.get('name')
    age=int(data.get('age'))
    #返回
    if name=='kikay' and age==18:
        return jsonify({'result':'ok'})
    else:
        return jsonify({'result':'error'})

抓包:

  • 18
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是使用 Flask-RESTful 和 Flask-SocketIO 构建前后端分离的聊天程序的示例代码: 后端代码: ```python from flask import Flask, request from flask_restful import Resource, Api from flask_cors import CORS from flask_socketio import SocketIO, send, emit app = Flask(__name__) api = Api(app) CORS(app) socketio = SocketIO(app, cors_allowed_origins='*') class Chat(Resource): def get(self): return {'message': 'Welcome to the chat app!'} def post(self): data = request.get_json() message = data['message'] emit('message', message, broadcast=True) return {'message': message} api.add_resource(Chat, '/chat') if __name__ == '__main__': socketio.run(app, debug=True) ``` 前端代码: ```html <!DOCTYPE html> <html> <head> <title>Chat App</title> </head> <body> <h1>Chat App</h1> <div id="messages"></div> <form> <input id="message" type="text"> <button type="submit" id="send">Send</button> </form> <script src="https://cdn.socket.io/socket.io-3.1.0.min.js"></script> <script> const socket = io('http://localhost:5000'); socket.on('message', function (data) { const messages = document.getElementById('messages'); messages.innerHTML += '<p>' + data + '</p>'; }); const form = document.querySelector('form'); form.addEventListener('submit', function (event) { event.preventDefault(); const input = document.getElementById('message'); const message = input.value; socket.emit('message', message); input.value = ''; }); </script> </body> </html> ``` 在这个示例中,我们创建了一个名为 Chat 的资源,其中 GET 请求将返回欢迎消息,而 POST 请求将广播收到的消息。我们使用 Flask-SocketIO 在后端处理 WebSocket 连接,并使用 emit 函数将消息发送给所有连接的客户端。前端代码使用 Socket.IO 客户端库来建立 WebSocket 连接,并使用 emit 函数将用户输入的消息发送到服务器。收到服务器发送的消息时,前端代码将其显示在页面上。 要运行此示例,请确保已安装 FlaskFlask-RESTful、Flask-Cors 和 Flask-SocketIO,并在终端中运行以下命令: ``` $ export FLASK_APP=app.py $ flask run ``` 然后在浏览器中打开 http://localhost:5000/,即可开始聊天。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值