5.Python-使用XMLHttpRequest对象来发送Ajax请求

题记

使用XMLHttpRequest对象来发送Ajax请求,以下是一个简单的实例和操作过程。

安装flask模块

pip install flask

安装mysql.connector模块

pip install mysql-connector-python

编写app.py文件

app.py文件如下:

复制代码
from flask import Flask, request, render_template
import mysql.connector

app = Flask(__name__)

# 连接到MySQL数据库
db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="123456",
    database="test"
)

# 创建游标对象
cursor = db.cursor()

# 创建表格(如果不存在)
cursor.execute("CREATE TABLE IF NOT EXISTS students (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)")

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

@app.route('/add', methods=['POST'])
def add():
    name = request.form['name']
    age = request.form['age']

    # 向数据库插入数据
    sql = "INSERT INTO students (name, age) VALUES (%s, %s)"
    values = (name, age)
    cursor.execute(sql, values)
    db.commit()

    return "数据已成功添加到数据库!"

if __name__ == '__main__':
    app.run()
python 复制代码
from flask import Flask, request, render_template
import mysql.connector

app = Flask(__name__)

# 连接到MySQL数据库
db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="123456",
    database="test"
)

# 创建游标对象
cursor = db.cursor()

# 创建表格(如果不存在)
cursor.execute("CREATE TABLE IF NOT EXISTS students (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)")

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

@app.route('/add', methods=['POST'])
def add():
    name = request.form['name']
    age = request.form['age']

    # 向数据库插入数据
    sql = "INSERT INTO students (name, age) VALUES (%s, %s)"
    values = (name, age)
    cursor.execute(sql, values)
    db.commit()

    return "数据已成功添加到数据库!"

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

编写index.html

注意:index.html要放在templates文件夹下面

index.html文件如下:

复制代码
<!DOCTYPE html>
<html>
<head>
    <title>Add Student</title>
</head>
<body>
    <h1>新增学生</h1>
    <form id="updateForm">
    <label for="name">姓名:</label>
    <input type="text" id="name" name="name"><br><br>
    <label for="age">年龄:</label>
    <input type="text" id="age" name="age"><br><br>
    <!--onclick 属性被设置为 "submitForm()",表示当按钮被点击时,会执行 submitForm() 函数。-->
    <input type="button" value="Add" οnclick="submitForm()">
</form>

<script>
    //这段代码是一个 JavaScript 函数 submitForm(),用于处理表单的提交操作
    function submitForm() {
        // 这两行代码使用原生 JavaScript 获取表单中输入框的值。
        // 通过 getElementById() 方法选择具有相应 id 的元素,
        // 并使用 .value 属性获取输入框的值,将其存储在相应的变量中。
        var name = document.getElementById("name").value;
        var age = document.getElementById("age").value;

        //创建一个 XMLHttpRequest 对象,用于发送 Ajax 请求。
        var xhr = new XMLHttpRequest();
        //设置 Ajax 请求的方法、URL 和异步标志。
        // "POST" 表示使用 POST 方法发送请求,"/add" 是请求的目标 URL,true 表示使用异步方式发送请求。
        xhr.open("POST", "/add", true);
        //设置请求头的 Content-Type,指定请求的数据格式为 URL 编码形式。
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        //这是一个回调函数,用于处理 Ajax 请求的状态变化。
        // 当readyState变为 4(表示请求已完成)且status为 200(表示请求成功)时,会执行其中的代码
        xhr.onreadystatechange = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                // 在这里处理Ajax响应
                console.log(xhr.responseText); // 打印响应内容
            }
        };

        // 构建要发送的数据字符串
        // 通过将姓名和年龄进行 URL 编码,并使用 + 连接符拼接成一个字符串。
        var data = "name=" + encodeURIComponent(name) + "&age=" + encodeURIComponent(age);

        //发送 Ajax 请求,并将数据字符串作为请求的主体发送到服务器。
        xhr.send(data);
    }
</script>
</body>
</html>
html 复制代码
<!DOCTYPE html>
<html>
<head>
    <title>Add Student</title>
</head>
<body>
    <h1>新增学生</h1>
    <form id="updateForm">
    <label for="name">姓名:</label>
    <input type="text" id="name" name="name"><br><br>
    <label for="age">年龄:</label>
    <input type="text" id="age" name="age"><br><br>
    <!--onclick 属性被设置为 "submitForm()",表示当按钮被点击时,会执行 submitForm() 函数。-->
    <input type="button" value="Add" onclick="submitForm()">
</form>

<script>
    //这段代码是一个 JavaScript 函数 submitForm(),用于处理表单的提交操作
    function submitForm() {
        // 这两行代码使用原生 JavaScript 获取表单中输入框的值。
        // 通过 getElementById() 方法选择具有相应 id 的元素,
        // 并使用 .value 属性获取输入框的值,将其存储在相应的变量中。
        var name = document.getElementById("name").value;
        var age = document.getElementById("age").value;

        //创建一个 XMLHttpRequest 对象,用于发送 Ajax 请求。
        var xhr = new XMLHttpRequest();
        //设置 Ajax 请求的方法、URL 和异步标志。
        // "POST" 表示使用 POST 方法发送请求,"/add" 是请求的目标 URL,true 表示使用异步方式发送请求。
        xhr.open("POST", "/add", true);
        //设置请求头的 Content-Type,指定请求的数据格式为 URL 编码形式。
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        //这是一个回调函数,用于处理 Ajax 请求的状态变化。
        // 当readyState变为 4(表示请求已完成)且status为 200(表示请求成功)时,会执行其中的代码
        xhr.onreadystatechange = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                // 在这里处理Ajax响应
                console.log(xhr.responseText); // 打印响应内容
            }
        };

        // 构建要发送的数据字符串
        // 通过将姓名和年龄进行 URL 编码,并使用 + 连接符拼接成一个字符串。
        var data = "name=" + encodeURIComponent(name) + "&age=" + encodeURIComponent(age);

        //发送 Ajax 请求,并将数据字符串作为请求的主体发送到服务器。
        xhr.send(data);
    }
</script>
</body>
</html>

执行程序

启动命令:

python app.py

访问地址:

localhost:5000

展示图

后记

觉得有用可以收藏或点赞!

相关推荐
子夜江寒25 分钟前
基于 OpenCV 的图像形态学与边缘检测
python·opencv·计算机视觉
霖霖总总28 分钟前
[小技巧19]MySQL 权限管理全指南:用户、角色、授权与安全实践
数据库·mysql·安全
king王一帅2 小时前
Incremark Solid 版本上线:Vue/React/Svelte/Solid 四大框架,统一体验
前端·javascript·人工智能
少林码僧7 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
智航GIS7 小时前
10.4 Selenium:Web 自动化测试框架
前端·python·selenium·测试工具
麦聪聊数据7 小时前
MySQL并发与锁:从“防止超卖”到排查“死锁”
数据库·sql·mysql
jarreyer7 小时前
摄像头相关记录
python
宝贝儿好7 小时前
【强化学习】第六章:无模型控制:在轨MC控制、在轨时序差分学习(Sarsa)、离轨学习(Q-learning)
人工智能·python·深度学习·学习·机器学习·机器人
前端工作日常7 小时前
我学习到的A2UI概念
前端
大、男人7 小时前
python之asynccontextmanager学习
开发语言·python·学习