DataTable ajax分页+删除

这个框架前前后后跳进了很多次坑,也算是本人比较愚笨吧做了很长的时间而积累的经验。。。

 $(document).ready(function() {
        $("#sample").DataTable({
            // Internationalisation. For more info refer to http://datatables.net/manual/i18n
            language: {
                "aria": {
                    "sortAscending": ": 以升序排列此列",
                    "sortDescending": ": 以降序排列此列"
                },
                "emptyTable": "表中数据为空",
                "info": "当前显示第 _START_ 至 _END_ 项,共 _TOTAL_ 项。",
                "infoEmpty": "没有发现记录",
                "infoFiltered": "(由 _MAX_ 项结果过滤)",
                "infoPostFix": "",
                "infoThousands": ",",
                "lengthMenu": "每页 _MENU_ 项",
                "loadingRecords": "载入中...",
                "processing": "处理中...",
                "paginate": {
                    "first": "首页",
                    "previous": "上页",
                    "next": "下页",
                    "last": "末页",
                },
                //"search": "搜索:",
                //"url": "",
                "zeroRecords": "没有匹配结果"
            },
            order: [],//取消默认排序查询,否则复选框一列会出现小箭头
            bLengthChange:false,//禁止使用搜索框
            autoWidth:false,//禁用自动调整列宽
            stripeClasses:["odd", "even"],//为奇偶行加上样式,兼容不支持CSS伪类的场合
            searching:false,//禁用原生搜索
            orderMulti:false,//启用多列排序
            renderer:"bootstrap",//渲染样式:Bootstrap和jquery-ui
            pagingType:"simple_numbers", //分页样式:simple,simple_numbers,full,full_numbers
            ajax: function (data, callback) {
                var param = {};
                param.limit = data.length;//每页显示多少
                param.start = data.start;//开始的记录序号
                //console.log(param.limit);
                //param.draw = 1;
                 $.ajax({
                    type: "POST",
                    url: "/ajax/lock/list",
                    //cache: false,  //禁用缓存
                    data: JSON.stringify(param),  //传入组装的参数
                    queryParams:function(params){
                        var xsrf = $("input[name = ‘_xsrf‘]")
                        if(xsrf != undefined){
                            params._xsrf = product_ver[0].value;
                        }
                        var limit = $("select[name=‘table-record_length‘]");
                        if(limit != undefined){
                            limit = (limit[0] && limit[0].value) || 20;
                            params.length = limit;
                        }
                        return params
                    },
                   dataSrc: function(response){
                       return response.data;
                    },
                    dataType: "json",
                    success: function (result) {

                        //setTimeout仅为测试延迟效果
                        setTimeout(function () {
                            //封装返回数据
                        var returnData = {};
                        returnData.draw = data.draw;//这里直接自行返回了draw计数器,应该由后台返回
                        returnData.recordsTotal = result.recordsTotal;//返回数据全部记录
                        returnData.recordsFiltered = result.recordsTotal;//后台不实现过滤功能,每次查询均视作全部结果
                        returnData.data = result.data;//返回的数据列表

                        //调用DataTables提供的callback方法,代表数据已封装完成并传回DataTables进行渲染
                        //此时的数据需确保正确无误,异常判断应在执行此回调前自行处理完毕
                        callback(returnData);
                        }, 200);
                    }
                })
            },
            processing:true,//隐藏加载提示,自行处理
            serverSide:true,//启用服务器端分页
            columns:[
               { "data": "lock_id","searchable":false,"orderable":true},
               { "data": "name","searchable":false,"orderable":false},
               { "data": "cat_eye", "render":function(data){
                   switch(data){
                        case true:
                            return ‘有‘;
                        case false:
                            return ‘没有‘;
                   }
               }},
               { "data": "type", "render":function(data){
                   switch(data){
                        case 0:
                            return ‘F-A‘;
                        case 1:
                            return ‘F-B‘;
                        default:
                            return ‘F-C‘
                   }
               }},
               { "data": "mac","searchable":false,"orderable":false},
               { "data": "province","searchable":false,"orderable":false},
               { "data": "alarm", "render":function(data){
                   switch(data){
                        case 0:
                            return ‘正常‘;
                        case 1:
                            return ‘不正常‘;
                   }
               }},
               { "data": "online", "render":function(data){
                   switch(data){
                        case true:
                            return ‘在线‘;
                        case false:
                            return ‘不在线‘;
                   }
               }},
               { "data": "corp_id", "render":function(data){
                   switch(data){
                        case 0:
                            return ‘安居心‘;
                        case 1:
                            return ‘国海‘;
                   }
               }},
               { "data": "product_ver","searchable":false,"orderable":false},
               { "data": "firmware_ver","searchable":false,"orderable":false},
               { "data": "master_id"},
               { "data": "has_ap", "render":function(data){
                   switch(data){
                        case 0:
                            return ‘有‘;
                        case 1:
                            return ‘没有‘;
                   }
               }},
               { "data": "descr","searchable":false,"orderable":false},
               {
                    "data": null,
                    "className": "center",
                    "defaultContent": ‘<button type="button" id="editrow" data-toggle="modal" class="btn btn-outline btn-circle btn-sm purple"><i class="fa fa-edit"></i></button>  <button id="delrow" class="btn btn-outline btn-circle dark btn-sm black"><i class="fa fa-trash-o"></i></button>‘
                }
            ],
        });
         //表数据删除
        $(‘#sample‘).on( ‘click‘, ‘button#delrow‘, function (even) {
             even.preventDefault;//方法阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交)。
             if(confirm("确定删除该信息?") == false){
                return;
             }else{         //得到当前对象的值
                var data = $("#sample").DataTable().row( $(this).parents(‘tr‘) ).data();

                $.ajax({
                    url: ‘/ajax/lock/delete‘,
                    type: ‘POST‘,
                    dataType: ‘json‘,
                    data: JSON.stringify({
                        lock_id: data["lock_id"]
                    }),            //success是指后台数据库的表么?如果是,先将success表中相关的数据封装在list里面,然后将list转为json数据格式的字符串返回到前台。如果你用的是jQuery的ajax方法,那么记得在前台接受的时候一定要指定数据接受格式为json,否则你得到是一个json的字符串,不是一个json的对象
                  success:function(data){
                       if (data.success == null){
                            alert(‘删除成功!‘);
                            start = $("#sample").dataTable().fnSettings()._iDisplayStart;//从第几行开始显示数据
                            total = $("#sample").dataTable().fnSettings().fnRecordsDisplay();//
                            window.location.reload();
                            if((total-start) == 1){
                                if (start > 0) {
                                    $("#sample").dataTable().fnPageChange( ‘previous‘, true);//已回到上一页中                       //.注意$("#sorting-advanced").dataTable().fnPageChange( ‘previous‘); 是不行的,必需进行刷新,否则页面中显示的iDisplayStart会从cookie中取得,还是删除前的iDisplayStart
                                }
                            }
                       }
                    },
                    error:function(){
                        console.log(data);
                        alert(‘服务器无响应,请联系管理员!‘);
                    }
                })
            }
         });

});

  

时间: 2024-12-07 10:56:57

DataTable ajax分页+删除的相关文章

jQuery插件 dataTable Ajax分页功能实现

jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表格的排序.浏览器分页.服务器分页.筛选.格式化等功能.需要可以到 dataTables 的网站 http://www.datatables.net/ 下载这个脚本库. 在网页开发过程中,我们可能会从后台读入数据建表.当数据过大时,可能导致建表时间过长,于是就需要实现Ajax分页功能,代码如下: HTML: <table id="example" class="display" wid

C#基于数据库存储过程的AJAX分页实例

本文实例讲述了C#基于数据库存储过程的AJAX分页实现方法.分享给大家供大家参考.具体如下: 首先我们在数据库(SQL Server)中声明定义存储过程 代码如下: use sales    –指定数据库 if(exists(select * from sys.objects where name='proc_location_Paging')) –如果这个proc_location_paging存储过程存在则删除 drop proc proc_location_Paging go create

【TP3.2】TP3.2下实现ajax分页(原创+亲测可用)

一,写在最开始:ajax分页的原理,是利用了js的ajax执行请求,获取分页list和分页page [代码块],去替换页面显示数据的[代码块] 技术:js的ajax + TP3.2的fetch("Index/data")技术,仅此而已. 1.在Library\Think\ 目录下直接加入以下代码:Ajaxpage.class.php <?php /** * ajax分页类,有namespace,使用方法: * 控制器直接$ajaxpage = new \Think\Ajaxpag

基于jquery的ajax分页插件(demo+源码)

前几天打开自己的博客园主页,无意间发现自己的园龄竟然有4年之久了.可是看自己的博客列表却是空空如也,其实之前也有写过,但是一直没发布(然而好像并没有什么卵用).刚开始学习编程时就接触到博客园,且在博客园学习了很多的知识,看过很多人的分享.说来也惭愧,自己没能为园友们分享自己的所学所得(毕竟水平比较差). 过去的一年也是辗转了几个城市换了几份工作(注定本命年不太平?).八月份来到现在所在的公司(OTA行业),公司是做互联网的,所以可能大家的前端都屌屌的?之前一直从事.NET开发(现在在这边也是),

Django - Ajax分页

目前总结了2种方法: 1. Ajax 分页 尼玛各种google,stackoverflow,搞了好久才总结出这个,之前使用Pagination tag loading的方式不好用,并且不能进行ajax提交请求的页面无刷新的方式去分页 1.view.py 1 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 2 from django.shortcuts import render 3 def xxx

jQuery、Ajax分页

1.效果图预览 2.HTML代码 <div class="row"> <div class="col-lg-12 col-sm-12 col-xs-12 col-xxs-12"> <table class="table table-striped table-hover table-bordered bootstrap-datatable " id="TemplateTable"> <

laraver ajax分页

1,设置分页容器参考laraver手册 我的设置代码如下: //设置分页容器  /app/models/ZurbPresenter.php<?php     class ZurbPresenter extends Illuminate\Pagination\Presenter {    public function getPageLinkWrapper($url, $page, $rel = null)    {        $rel = is_null($rel) ? '' : ' rel

YAHOO.widget.DataTable 动态分页。

Server:服务器端的代码输出数据格式如下: {"total":"392","rows":[{"areaid":"1","areaname":"北京","parentid":"0","arrparentid":"0","child":"0",&qu

ThinkPHP AJAX分页及JS缓存的应用

//AJAX分页详见兄弟连PHP项目视频教程22讲35分钟左右 主要实现是需要将分页中的每个链接都改为AJAX请求 //前端缓存技术:基于javascript传输的数据,只要浏览器没关,都保存在内存中 //实现方法:创建一个数组,将需要缓存的数据保存在数组中,需要使用时调用即可:参加兄弟连PHP项目视频22第45分钟左右 var cache=new Array(); //创建一个用于缓存的数组 function setpage(index,data) { if (!cache[index]) {