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

展示图

后记

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

相关推荐
量子炒饭大师7 小时前
MySQL 5.7 在 CentOS 7 环境安装:从清理 MariaDB 到初始化与完善配置
数据库·mysql·centos·mariadb
AI情绪识别开源7 小时前
检信ALLEMOTION VibrationAI 2.4.0 12维度情绪识别开源源代码
开发语言·python
极创信息7 小时前
国产化信创适配认证高频术语:信创适配、软件自主可控、国产化率、代码溯源率、代码自主率、代码开源率是什么?
java·python·struts·eclipse·开源·php·hibernate
Data_Journal8 小时前
什么是 CAPTCHA,它是如何工作的?
java·大数据·服务器·前端·数据库
计算机魔术师8 小时前
我看了这个更新,把原来的检索方案推翻了
前端
zhanghaha13148 小时前
HTML系列教程:3_HTML 基础标签 — 标题、段落、超链接、图像
前端·html
AC赳赳老秦8 小时前
语义采集进阶实战:利用 OpenClaw AI 语义识别自动提取网页核心信息,无需手动编写选择器
java·运维·服务器·python·信息可视化·deepseek·openclaw
李高钢8 小时前
C# WPF Prism 进阶(二):区域(Region)与模块化(Module)
java·前端·数据库
Logintern098 小时前
什么时候应该用多进程什么时候用多线程呢?
开发语言·python
xyphf_和派孔明8 小时前
Vite 与 Webpack 对比及常见面试题
前端·webpack·vite