使用ajax完成python flask前端与后台数据的交互

python端:

from flask import Flask, render_template
import json
import os

app = Flask(__name__)

testInfo = {}


@app.route('/test_post/nn', methods=['GET', 'POST'])  # 路由
def test_post():
    testInfo['name'] = 'xiaoliao'
    testInfo['age'] = '28'
    return json.dumps(testInfo)


@app.route('/')
def hello_world():
    return 'Hello World!'


@app.route('/index')
def index():
    return render_template('index.html')


if __name__=="__main__":
    app.run()

JS端:

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>echarts</title>
</head>
 
<body>
    <p>数据展示:
        <input type="text" id ="NAME">
        <input type="text" id ="AGE"></p> 
    <p>
        <button id = "btn">点击获取</button>
        <input type="text" id ="NAME2">
        <input type="text" id ="AGE2"></p> 
    
    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.js"></script>
	<script>
        $.ajax({
        url: "test_post/nn",
        type: "POST",
        dataType: "json",
        success: function (data) {
            // alert(data.name + ":" + data.age);
            $("#NAME").val(data.name);
            $("#AGE").val(data.age);
            console.log(data)}

        })
	</script>
    

    <script>
        $(function() {
            // body...
            $("#btn").click(function(){
                $.ajax({
                url: "test_post/nn",
                type: "POST",
                dataType: "json",
                success: function (data) {
                // alert(data.name + ":" + data.age);
                $("#NAME2").val(data.name);
                $("#AGE2").val(data.age);
                console.log(data)}

                })
            })
        })
    </script>

</body>
 
</html>

参考链接:

https://www.cnblogs.com/showersun/p/3745355.html

https://blog.csdn.net/we1583004we/article/details/81512893

http://www.w3school.com.cn/jquery/ajax_post.asp

  • 3
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
好的,针对您的问题,我可以提供以下两种方法: 1. 使用AJAX请求 可以在前端(html)中使用JavaScript发起AJAX请求,向后台Flask)发送请求并获取响应。具体实现方式如下: 前端(html)代码: ```html <button onclick="sendMsg()">发送</button> <div id="response"></div> <script> function sendMsg() { var msg = document.getElementById("msg").value; var xhr = new XMLHttpRequest(); xhr.open("POST", "/api", true); xhr.setRequestHeader("Content-type", "application/json"); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { document.getElementById("response").innerHTML = xhr.responseText; } }; xhr.send(JSON.stringify({"msg": msg})); } </script> ``` 后台Flask)代码: ```python from flask import Flask, request app = Flask(__name__) @app.route('/api', methods=['POST']) def api(): data = request.json msg = data.get('msg') # 获取前端传来的消息 # 处理消息并返回响应 return "Hello, " + msg if __name__ == '__main__': app.run() ``` 2. 使用WebSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议。使用WebSocket可以实现实时的双向通信。具体实现方式如下: 前端(html)代码: ```html <button onclick="sendMsg()">发送</button> <div id="response"></div> <script> var socket = new WebSocket("ws://localhost:5000/ws"); socket.onmessage = function(event) { document.getElementById("response").innerHTML = event.data; }; function sendMsg() { var msg = document.getElementById("msg").value; socket.send(msg); } </script> ``` 后台Flask)代码: ```python from flask import Flask, request from flask_sockets import Sockets app = Flask(__name__) sockets = Sockets(app) @sockets.route('/ws') def ws(ws): while not ws.closed: msg = ws.receive() # 获取前端传来的消息 # 处理消息并返回响应 ws.send("Hello, " + msg) if __name__ == '__main__': from gevent import pywsgi from geventwebsocket.handler import WebSocketHandler server = pywsgi.WSGIServer(('localhost', 5000), app, handler_class=WebSocketHandler) server.serve_forever() ``` 以上就是两种使用Flask后台前端(html)交互的方法。您可以根据具体需求选择合适的方式进行实现。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LoveWeeknd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值