ajax的get和post请求 -- 基于flask 简单示例

时间:2025-04-25 15:06:38

需求:在浏览器端输入姓名,将数据发送给后端,后端将内容追加到 user.json 中,并将该文件中的数据,返回到浏览器打印

1、浏览器端(html文件)

index.html文件

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div class="user">
    <input type="text" name="user">
    <input type="button" value="提交">
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<script>

    /*  get请求
    $.ajax({
        url:'http://localhost:8800/course',
        type:'get',
        dataType:'json',
        success:function (data) {

           console.log(data);
//            console.log(data);
//            var a = JSON.parse(data);
//            console.log(a);
//            var str_pretty1 = JSON.stringify(a);
//            console.log(str_pretty1)
        },
        error:function () {

        }
    })
    */

    // post请求
    $('input[type=button]').click(function () {

        $.ajax({
            url: "http://127.0.0.1:8800/create",
            type: 'post',
            data: {
                name: $('input[type=text]').val()
            },
            success: function (data) {
                console.log(data);
            }
        })
    })

</script>
</body>
</html>

2、server端(py文件)

  使用之前需要下载模块:flask    pip3 install flask

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# Date: 2018/6/5

import json
# 导入模块
from flask import Flask
from flask import request
from flask import Response

#创建实例化请求对象
app = Flask(__name__)

# 定义路由
@app.route("/")
# 路由对应的函数处理
def index():
    # 响应数据
    resp = Response("<h2>首页</h2>")
    # 允许所有跨域访问
    resp.headers["Access-Control-Allow-Origin"] = "*"
    return resp

@app.route("/course")
def courses():
    # 业务逻辑

    # 返回json序列化的数据
    resp = Response(json.dumps({
        "name": 'alex'
    }))
    resp.headers["Access-Control-Allow-Origin"] = "*"

    return resp

# 前端发送post请求
# 定义路由
@app.route("/create", methods=["post", ])
def create():
    print(request.form.get('name'))
    # 读取user.json中的原始的数据
    with open("user.json", "r") as f:
        # 将数据反序列化
        data = json.loads(f.read())

    # 将新数据添加到原始的数据中
    data.append({"name": request.form.get('name')})

    # 将此时最新的数据再次写入文件中
    with open("user.json", "w") as f:
        f.write(json.dumps(data))

    # 再次返回最新的数据 响应会前端
    resp = Response(json.dumps(data))

    resp.headers["Access-Control-Allow-Origin"] = "*"

    return resp

if __name__ == '__main__':

    app.run(host="localhost", port=8800, )

3、服务端中存放的user.json

    数据以后会存放在数据库中,现在暂时放在文件中

[{"name": "\u5f20\u4e09"}, {"name": "alex"}, {"name": "alex1"}, {"name": "alex12"}, {"name": "alex123"}]