基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能

请看下面的攻略:

前言

本攻略将详细讲解如何使用 PHP 框架 ThinkPHP 和 jQuery 实现 Ajax 的多选反选不选删除数据功能。

准备工作

在开始之前,需要确保你已经完成以下准备工作:

  • 已经安装了 PHP 和 MySQL,且掌握了基本的 PHP 和 MySQL 知识;
  • 已经安装了 Apache 或者 Nginx 服务器,并成功配置了虚拟主机;
  • 已经安装了 Composer,且掌握了基本的 Composer 知识。

安装 ThinkPHP

我们可以使用 Composer 安装 ThinkPHP:

composer create-project topthink/think=5.1.x  projectname

其中,projectname 是你的项目名称。安装完成后,进入项目目录:

cd projectname

使用内置服务器运行项目(默认在 http://localhost:8000 上监听):

php think run

在浏览器中访问 http://localhost:8000,即可看到首页。

实现 Ajax 多选反选不选删除数据功能

新建数据库

首先,我们需要在 MySQL 中新建一个数据库。假设我们将数据库命名为 ajax_demo,并新建一个表来存储数据,命名为 users,包含以下字段:

  • id:自增主键;
  • name:用户名称,varchar(255);
  • age:用户年龄,int;
  • sex:用户性别,int,0 代表女性,1 代表男性。

新建路由和控制器

在 ThinkPHP 中,我们使用路由来处理 HTTP 请求。打开 application/route.php 文件,添加以下路由:

Route::get('user', 'User/index');
Route::post('user/delete', 'User/delete');

其中,User/index 指向的是 User 控制器的 index 方法,用于显示用户列表;User/delete 指向的是 User 控制器的 delete 方法,用于删除用户。

然后,我们新建一个 User 控制器,命名为 UserController,并添加以下代码:

<?php
namespace app\index\controller;

use think\Controller;

class UserController extends Controller
{
    public function index()
    {
        $list = Db::name('users')->select();
        $this->assign('list', $list);
        return $this->fetch();
    }

    public function delete()
    {
        $ids = input('post.ids');
        $result = Db::name('users')->where('id', 'in', $ids)->delete();
        if ($result) {
            return json(['code' => 0, 'msg' => '删除成功!']);
        } else {
            return json(['code' => 1, 'msg' => '删除失败!']);
        }
    }
}

其中,index 方法用于显示用户列表,delete 方法用于删除用户。需要注意的是,我们使用了 input 函数来获取 POST 请求中的 ids 参数,这个参数用于指定需要删除的用户 ID。

新建视图文件

我们在 application\index\view\user 目录下新建一个 index.html 文件,用于显示用户列表:

<!doctype html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>用户列表</title>
    <script src="/static/jquery-3.3.1.min.js"></script>
</head>
<body>
    <table border="1">
        <thead>
            <tr>
                <th><input type="checkbox" id="check_all"></th>
                <th>编号</th>
                <th>名称</th>
                <th>年龄</th>
                <th>性别</th>
            </tr>
        </thead>
        <tbody>
            {volist name="list" id="user"}
            <tr>
                <td><input type="checkbox" class="check" data-id="{$user.id}"></td>
                <td>{$user.id}</td>
                <td>{$user.name}</td>
                <td>{$user.age}</td>
                <td>{$user.sex == 1 ? '男' : '女'}</td>
            </tr>
            {/volist}
        </tbody>
    </table>
    <button id="delete_btn">删除选中</button>

    <script>
        $(document).ready(function() {
            // 全选/反选按钮点击事件
            $('#check_all').click(function() {
                if ($(this).prop('checked')) {
                    $('.check').prop('checked', true);
                } else {
                    $('.check').prop('checked', false);
                }
            });

            // 删除按钮点击事件
            $('#delete_btn').click(function() {
                var ids = [];
                $('.check:checked').each(function() {
                    ids.push($(this).data('id'));
                });

                if (ids.length == 0) {
                    alert('请选择需要删除的数据!');
                    return false;
                }

                if (confirm('确定要删除选中的数据吗?')) {
                    $.ajax({
                        url: '/user/delete',
                        type: 'POST',
                        data: {
                            ids: ids.join(',')
                        },
                        dataType: 'json',
                        success: function(res) {
                            if (res.code == 0) {
                                alert(res.msg);
                                window.location.reload();
                            } else {
                                alert(res.msg);
                            }
                        },
                        error: function() {
                            alert('发生未知错误!');
                        }
                    });
                }
            });
        });
    </script>
</body>
</html>

以上的代码中,我们创建了一个表格来展示用户数据,包含编号、名称、年龄、性别等字段,同时添加了一个全选/反选按钮和一个删除按钮。在 JavaScript 中,我们使用了 jQuery 的 .click().prop() 方法来监听按钮点击事件和修改属性值,使用 .each() 方法来遍历选中的项,使用 AJAX 发送 POST 请求来删除选中的用户数据。

运行效果

在浏览器中访问 http://localhost:8000/user,即可看到用户列表页面。可以鼠标点击全选/反选按钮,或者只选中部分数据后点击删除按钮,删除数据时将会发送 POST 请求并实时更新页面数据。

示例说明

为了更好的帮助您理解 Ajax 多选反选不选删除数据功能的具体实现,这里给出了两个示例:

示例一

用户列表
编号 名称 年龄 性别
1 张三 20
2 李四 22
3 王五 25
4 赵六 30
操作步骤
  1. 点击全选/反选按钮,将所有数据选中;
  2. 点击删除选中按钮,将弹出确认对话框,并提示“确定要删除选中的数据吗?”;
  3. 点击确定按钮,将会发送 POST 请求,删除所有数据;
  4. 页面自动刷新,表格内容为空。

示例二

用户列表
编号 名称 年龄 性别
1 张三 20
2 李四 22
3 王五 25
4 赵六 30
操作步骤
  1. 选中第1、3、4条数据;
  2. 点击删除选中按钮,将弹出确认对话框,并提示“确定要删除选中的数据吗?”;
  3. 点击确定按钮,将会发送 POST 请求,删除第1、3、4条数据;
  4. 页面自动刷新,表格中仅显示第2条数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • jQuery响应滚动条事件功能示例

    我来为你详细讲解“jQuery响应滚动条事件功能示例”的攻略。 1. 添加滚动条事件监听 首先,我们需要给页面的滚动区域添加一个滚动条事件监听,以便在滚动时能够进行相应的操作。使用jQuery来完成这个操作,代码如下: $(window).scroll(function() { // 滚动条滚动时的操作 }); 这里使用$(window),因为我们监听的是整…

    jquery 2023年5月28日
    00
  • jQWidgets jqxScrollBar largestep属性

    以下是关于 jQWidgets jqxScrollBar 组件中 largestep 属性的详细攻略。 jQWidgets jqxScrollBar largestep 属性 jQWidgets jqxScrollBar 组件的 largestep 属性用于设置动条的大步长。 语法 // 设置大步长 $(‘#scrollBar’).jqxScrollBar(…

    jquery 2023年5月12日
    00
  • HTML5+Canvas调用手机拍照功能实现图片上传(下)

    在HTML5的Canvas中,可以调用手机本身的摄像头进行拍照,并将拍摄的图片上传到网页中。这对于像手机拍照应用和社交媒体等需要上传图片的应用来说非常实用。下面将详细讲解实现这一功能的完整攻略,包括以下步骤: 第一步:创建HTML页面 首先,需要创建一个HTML页面来实现这一功能。在页面中,可以添加一个用于显示图片的Canvas元素,如下所示: <!D…

    jquery 2023年5月27日
    00
  • jQWidgets jqxProgressBar destroy()方法

    以下是关于 jQWidgets jqxProgressBar 组件中 destroy() 方法的详细攻略。 jQWidgets jqxProgressBar destroy() 方法 jQWidgets jqxProgressBar 组件的 destroy() 方法用于销毁进度条组件及其相关资源。 语法 $(‘#progressbar’).jqxProgre…

    jquery 2023年5月12日
    00
  • jQWidgets jqxNavBar minimizedTitle属性

    以下是关于 jQWidgets jqxNavBar 组件中 minimizedTitle 属性的详细攻略。 jQWidgets jqxNavBar minimizedTitle 属性 jQWidgets jqx 组件的 minimizedTitle 属性用于设置导航栏最小化状态下的标题。该属性可以是字符串。 语法 $(‘#navbar’).jqxNavBar…

    jquery 2023年5月12日
    00
  • JS实现间歇滚动的运动效果实例

    下面就针对“JS实现间歇滚动的运动效果实例”的完整攻略进行讲解。 什么是间歇滚动 在网页制作中,我们经常会使用JS来实现一些特效,其中就包括间歇滚动。间歇滚动指的是一种滚动效果,在此过程中页面会完成上下或左右的连续滚动。在实现间歇滚动之前,我们需要关注以下几个方面: 定义一个滚动区域:该区域可以是任意大小的区域,但需要使用CSS设置它的宽度和高度,同时设置o…

    jquery 2023年5月27日
    00
  • JQuery ajax 返回json时出现中文乱码该如何解决

    JQuery在使用ajax异步请求数据时,返回的数据通常是以JSON格式返回。如果返回的数据中存在中文字符,那么在部分浏览器下可能会出现中文乱码的问题。本文将为大家介绍在JQuery异步请求返回JSON数据时出现中文乱码的解决方法。 问题现象 Jquery ajax请求返回JSON时,中文字符出现乱码或其他非预期的字符。 解决方法 方法一:在后台进行字符编码…

    jquery 2023年5月18日
    00
  • jQWidgets jqxNotification refresh() 方法

    以下是关于 jQWidgets jqxNotification 组件中 refresh() 方法的详细攻略。 jQWidgets jqxNotification refresh() 方法 jQWidgets jqxNotification 组件的 refresh() 方法用于刷新通知框的内容和样式。 语法 $(‘#notification’).jqxNoti…

    jquery 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部