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

展示图

后记

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

相关推荐
猿饵块21 分钟前
cmake--get_filename_component
java·前端·c++
Unicorn建模21 分钟前
2024“华为杯”中国研究生数学建模竞赛(E题)深度剖析|数学建模完整过程+详细思路+代码全解析
python·算法·数学建模
好多吃的啊31 分钟前
背景图鼠标放上去切换图片过渡效果
开发语言·javascript·ecmascript
大表哥632 分钟前
在react中 使用redux
前端·react.js·前端框架
Passion不晚34 分钟前
打造民国风格炫酷个人网页:用HTML和CSS3传递民国风韵
javascript·html·css3
神奇夜光杯36 分钟前
Python酷库之旅-第三方库Pandas(123)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
十月ooOO36 分钟前
【解决】chrome 谷歌浏览器,鼠标点击任何区域都是 Input 输入框的状态,能看到输入的光标
前端·chrome·计算机外设
qq_3391911437 分钟前
spring boot admin集成,springboot2.x集成监控
java·前端·spring boot
zhangbin_23742 分钟前
【Python机器学习】NLP信息提取——提取人物/事物关系
开发语言·人工智能·python·机器学习·自然语言处理
pan_junbiao1 小时前
Vue使用代理方式解决跨域问题
前端·javascript·vue.js