PHP与AJAX实现待办列表任务的无刷新删除功能


PHP与AJAX实现待办列表任务的无刷新删除功能

本教程详细阐述如何利用php、mysql与ajax技术,在不刷新整个页面的前提下,实现待办列表中任务的删除功能。通过前端j*ascript发送异步请求至后端php脚本处理数据库操作,并动态更新页面dom,显著提升用户交互体验。

在现代Web应用中,用户对交互体验的要求越来越高。传统的表单提交和页面刷新方式在执行删除等操作时,会中断用户的当前浏览流程。通过结合PHP后端处理、MySQL数据库存储和AJAX(Asynchronous J*aScript and XML)前端技术,我们可以实现无刷新删除功能,让用户操作更加流畅。

一、核心原理概述

无刷新删除的核心在于AJAX。当用户点击删除按钮时:

  1. 前端J*aScript:捕获点击事件,获取待删除任务的唯一标识(ID)。
  2. AJAX请求:J*aScript通过AJAX向服务器发送一个异步请求,通常是POST请求,将任务ID传递给后端。
  3. 后端PHP:接收请求,连接MySQL数据库,执行DELETE语句删除对应任务。
  4. 后端响应:PHP脚本将操作结果(成功或失败)返回给前端。
  5. 前端J*aScript:接收后端响应,根据结果动态更新页面DOM,例如,将已删除的任务从列表中移除,而无需重新加载整个页面。

二、数据库准备

首先,我们需要一个存储待办事项的数据库表。假设我们有一个名为 tasks 的表,结构如下:

CREATE TABLE `tasks` (
    `task_id` INT AUTO_INCREMENT PRIMARY KEY,
    `task_name` VARCHAR(255) NOT NULL,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

三、前端页面构建 (HTML)

在主页面(例如 index.php)中,我们需要循环显示待办事项,并为每个事项提供一个删除按钮。关键在于为每个任务行添加一个唯一的标识,以便J*aScript能够精准定位和操作。

<?php
// database.php 文件包含数据库连接配置
include 'database.php'; 

// 假设 $pdo 是已建立的PDO数据库连接对象
// 从数据库获取任务列表
$stmt = $pdo->query("SELECT task_id, task_name FROM tasks ORDER BY task_id DESC");
$tasks = $stmt->fetchAll();
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>我的待办列表</title>
    <!-- 引入 jQuery 库,用于简化 AJAX 操作和 DOM 操作 -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; }
        h1 { color: #333; }
        #task-list { border: 1px solid #ccc; border-radius: 5px; padding: 10px; max-width: 600px; margin-top: 20px; }
        .task-item {
            display: flex;
            align-items: center;
            padding: 10px 0;
            border-bottom: 1px solid #eee;
        }
        .task-item:last-child {
            border-bottom: none;
        }
        .task-name {
            flex-grow: 1;
            font-size: 1.1em;
        }
        .delete-btn {
            background-color: #dc3545; /* 红色 */
            color: white;
            border: none;
            padding: 6px 12px;
            cursor: pointer;
            border-radius: 4px;
            font-size: 0.9em;
            transition: background-color 0.2s ease;
        }
        .delete-btn:hover {
            background-color: #c82333; /* 深红色 */
        }
        .no-tasks {
            color: #666;
            text-align: center;
            padding: 20px;
        }
    </style>
</head>
<body>
    <h1>我的待办事项</h1>
    <div id="task-list">
        <?php if (!empty($tasks)): ?>
            <?php foreach ($tasks as $task): ?>
                <!-- 为每个任务行添加一个唯一的类名,便于JS定位和删除 -->
                <div class="task-item task-row-<?php echo htmlspecialchars($task['task_id']); ?>">
                    <span class="task-name"><?php echo htmlspecialchars($task['task_name']); ?></span>
                    <!-- 删除按钮使用 data-task-id 属性存储任务ID -->
                    <button class="delete-btn" data-task-id="<?php echo htmlspecialchars($task['task_id']); ?>">删除</button>
                </div>
            <?php endforeach; ?>
        <?php else: ?>
            <p class="no-tasks">暂无待办事项。</p>
        <?php endif; ?>
    </div>

    <!-- J*aScript 代码将放在这里 -->
</body>
</html>

关键点说明:

乾坤圈新媒体矩阵管家 乾坤圈新媒体矩阵管家

新媒体账号、门店矩阵智能管理系统

乾坤圈新媒体矩阵管家 219 查看详情 乾坤圈新媒体矩阵管家
  • 每个任务项(div.task-item)都带有一个形如 task-row-123 的唯一类名,其中 123 是任务的 task_id。
  • 删除按钮(button.delete-btn)使用 data-task-id 属性存储了对应的任务ID。这种方式比直接使用 id 属性更灵活,因为 id 必须是页面唯一的。

四、前端交互逻辑 (J*aScript/jQuery)

接下来,我们编写J*aScript代码来处理删除按钮的点击事件,并通过AJAX与后端进行通信。

<script type="text/j*ascript">
    $(document).ready(function() {
        // 监听所有具有 'delete-btn' 类的按钮的点击事件
        $('.delete-btn').click(function() {
            var taskId = $(this).data("task-id"); // 获取按钮的 data-task-id 属性值

            // 弹出确认框,提升用户体验并防止误操作
            if (confirm("确定要删除此任务吗?")) {
                // 发送 AJAX POST 请求
                $.ajax({
                    type: "POST", // 使用 POST 方法发送数据
                    url: "task_delete.php", // 后端处理删除请求的脚本
                    data: { id: taskId }, // 将任务ID作为数据发送
                    cache: false, // 禁用缓存
                    success: function(response) {
                        // 假设后端返回 JSON 格式的响应
                        try {
                            var result = JSON.parse(response);
                            if (result.status === 'success') {
                                // 删除成功,使用 jQuery 的 fadeOut 动画效果隐藏并移除任务行
                                $(".task-row-" + taskId).fadeOut('slow', function() {
                                    $(this).remove(); // 动画结束后从 DOM 中彻底移除元素
                                    // 如果列表为空,可以显示“暂无待办事项”提示
                                    if ($('#task-list').children('.task-item:visible').length === 0) {
                                        $('#task-list').append('<p class="no-tasks">暂无待办事项。</p>');
                                    }
                                });
                            } else {
                                alert("删除失败: " + result.message);
                            }
                        } catch (e) {
                            alert("服务器响应异常,请重试。");
                            console.error("JSON parse error:", e, "Response:", response);
                        }
                    },
                    error: function(xhr, status, error) {
                        // 请求失败时的处理
                        alert("请求失败,请检查网络或稍后再试。");
                        console.error("AJAX error:", status, error);
                    }
                });
            } else {
                return false; // 用户取消删除操作
            }
        });
    });
</script>

关键点说明:

  • 使用 $(document).ready() 确保DOM加载完成后再绑定事件。
  • $(this).data("task-id") 用于获取按钮的 data-task-id 属性值。
  • $.ajax() 发送 POST 请求到 task_delete.php,并将任务ID作为 id 参数传递。
  • success 回调函数处理服务器响应。我们期望后端返回JSON数据,包含 status 和 message。
  • 如果删除成功,$(".task-row-" + taskId).fadeOut('slow', function() { $(this).remove(); }); 会使对应的任务行缓慢消失,然后从DOM中彻底移除。

五、后端处理脚本 (PHP)

创建一个名为 task_delete.php 的文件,用于接收前端的AJAX请求并执行数据库删除操作。为了安全性,我们将使用PDO预处理语句来防止SQL注入。

5.1 database.php (数据库连接配置)

<?php
// database.php
$host = 'localhost'; // 数据库主机
$db   = 'todo_app';   // 数据库名
$user = 'root';       // 数据库用户名
$pass = '';           // 数据库密码
$charset = 'utf8mb4'; // 字符集

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO

以上就是PHP与AJAX实现待办列表任务的无刷新删除功能的详细内容,更多请关注php中文网其它相关文章!


# 动态网页  # 重庆网站建设的技术方案  # 昭通seo优化费用  # 金山电影网站建设  # 微信营销的具体推广方式  # 衡阳seo营销报价  # 梁子湖网站排名优化  # 旅游营销推广步骤包括  # 标准的seo文章推广工具  # 企业关键词排名优化外包  # 图书网站推广策划案  # 运算符  # 单元格  # 数据库中  # 回调  # 表单  # mysql  # 保存为  # 移除  # 暂无  # 后端  # app  # go  # ajax  # json  # 前端  # js  # html  # jquery  # java  # javascript  # php 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 抖音火山版如何进行提现  安居客移动经纪人怎么设置自动回复?-安居客移动经纪人设置自动回复的方法  解决Pandas DataFrame高度碎片化警告:高效创建多列的策略  蜻蜓FM如何设置移动流量播放  C++ virtual析构函数作用_C++基类虚析构函数防止内存泄漏  以下哪一项是古代兵书三十六计中的计谋  咸鱼怎么设置仅粉丝可见的动态_咸鱼动态粉丝可见设置方法  Yandex浏览器官方入口_Yandex搜索引擎中文版  Highcharts雷达图径向轴数值标签实现教程  Win11如何分屏操作_Win11多窗口分屏技巧  qq音乐官方网站入口_qq音乐在线听歌网页版链接  快递优选如何查优选物流_快递优选专属物流渠道查询与配送时效  基于 Flink 和 Kafka 实现高效流处理:连续查询与时间窗口  Flask 应用中图片动态更新与上传:实现客户端定时刷新与服务器端文件管理  word怎么将图片设置为页面背景并不影响打印_Word图片背景设置方法  猫眼电影app如何设置电影上映提醒_猫眼电影上映提醒设置教程  汽车之家网页版免费登录_汽车之家官网首页直接进入  win11怎么更改账户类型 Win11标准用户和管理员权限切换【教程】  漫蛙漫画官方版直通入口 2025漫蛙漫画免注册访问说明  《via浏览器》强制缩放网页设置方法  Selenium自动化:利用键盘模拟解决复杂日期输入框输入问题  高德地图怎么查看未来行程规划_高德地图未来行程规划查看方法  在J*a中如何实现类的继承与方法重用_OOP继承方法重用技巧分享  如何外贸网站设计-能留住客户提升用户体验!  《蓝色星原:旅谣》坐骑获取攻略  b站怎么查看视频的码率_b站视频码率查看方法  抖音火山版注销账号抖音会注销吗 抖音火山版与抖音账号注销关系  windows10怎么更改下载路径_windows10默认存储位置修改教程  苹果iPhone14ProMax如何新建AppleID_iPhone14ProMax新建AppleID具体流程  如何在Podman容器中运行Composer_Docker替代品Podman的PHP与Composer容器化实践  济南公交卡手机充值指南  解决Go encoding/json 将JSON大数字解析为浮点数的问题  PHP动态导航按钮:根据用户登录状态切换链接与文本  基于键值条件高效映射 Pandas DataFrame 多列数据  荣耀盒子应用管理技巧  《鹿路通》退余额方法  如何通过settings.json个性化您的VS Code体验  厨房地面防滑垫的油污怎么洗? 机洗和手洗防滑垫的注意事项  电脑桌面图标怎么变大变小_Windows个性化设置第一课【新手入门】  J*aScript装饰器_元编程实战  J*aScript:从子元素中批量移除特定CSS类  《i莞家》修改昵称方法  金牛福袋获取攻略  mysql触发器如何编写_mysql触发器编写规范与代码示例讲解  可米酷漫画在线阅读入口_ 可米酷漫画官网直达链接  mysql镜像配置如何恢复数据_mysql镜像配置数据恢复详细流程  风神瞳获取全攻略  申通快递查询 申通物流快递单实时查询入口  路由器DNS怎么设置最快 优化DNS提升上网速度教程  我居然低估了 DeepSeek,这次更新它做到了这些! 

 2025-11-25

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.