jQuery+datatables插件实现ajax加载数据与增删改查功能示例


Posted in jQuery onApril 17, 2018

本文实例讲述了jQuery+datatables插件实现ajax加载数据与增删改查功能。分享给大家供大家参考,具体如下:

这里给大家分享一下我在项目中用datatables实现ajax加载数据与增删改查

注意,需要引入jquery、datatables、layer

html代码:

<div class="thead">
  <input placeholder="请输入搜索内容" id="searchTitle" type="text"/>
  <button id="search" class="layui-btn layui-btn-small layui-btn-primary"><i class="layui-icon">?</i> 搜索</button>
  <button id="add" class="layui-btn layui-btn-small layui-btn-primary"><i class="layui-icon">?</i> 新增</button>
  <button id="change" class="layui-btn layui-btn-small layui-btn-primary"><i class="layui-icon">?</i> 编辑</button>
  <button id="del" class="layui-btn layui-btn-small layui-btn-primary"><i class="layui-icon">?</i> 删除</button>
</div>
<table id="table" class="display" cellspacing="0" width="100%">
  <thead>
  <tr>
    <th>职业</th>
    <th>姓名</th>
    <th>性别</th>
    <th>爱好</th>
  </tr>
  </thead>
</table>

js代码:

//点击查找
$("#search").click(function () {
    table.ajax.reload();
});
//初始化datatables
var table = $('#example').DataTable({
    "searching": false,
    "serverSide": true,
    "bProcessing": true,
    "bPaginate": true, //翻页功能
    "bLengthChange": true, //改变每页显示数据数量
    "bFilter": true, //过滤功能
    "bSort": false, //排序功能
    "sPaginationType": "full_numbers",
    "fnServerData": function (sSource, aoData, fnCallback) {
      var json = {
        "page": {
          "start": aoData[3].value,
          "length": aoData[4].value,
        },
        "search": {
          "xb": $("#searchTitle").val()
        }
      };
      $.ajax({
        "dataType": 'json',
        "type": "POST",
        "url": server + "user/queryUser.do",
        "contentType": "application/json; charset=utf-8",
        "data": JSON.stringify(json),
        "success": function (data) {
          data.recordsTotal = data.page.recordsTotal;
          data.recordsFiltered = data.page.recordsTotal;
          fnCallback(data);
        }
      });
    },
    "oLanguage": {
      "sLengthMenu": "每页显示 _MENU_ 条记录",
      "sZeroRecords": "抱歉, 没有找到",
      "sInfoEmpty": "没有数据",
      "sInfoFiltered": "(从 _MAX_ 条数据中检索)",
      "oPaginate": {
        "sFirst": "首页",
        "sPrevious": "前一页",
        "sNext": "后一页",
        "sLast": "尾页"
      },
      "sZeroRecords": "没有检索到数据",
    },
    "aoColumns": [
      {"data": "zy"},
      {"data": "xm"},
      {"data": "xb"},
      {"data": "fov"}
    ]
});
///////////////////////////////////////////////////////////////////////////////
//增加
$("#add").click(function () {
    layer.open({
      type: 1,
      skin: 'layui-layer-rim', //加上边框
      area: ['420px', '240px'], //宽高
      btn: ['确定'],
      yes: function (index, layero) {
        var json = {
          "zy": $("#zhiy").val(),
          "xm": $("#name").val(),
          "xb": $("#sex").val(),
          "fov_ck": $("#aihao").val()
        };
        $.ajax({
          type: "POST",
          url: server + "user/addUser.do",
          contentType: "application/json; charset=utf-8",
          data: JSON.stringify(json),
          dataType: "json",
          success: function (data) {
            if (data.success == true) {
              layer.msg(data.msg);
            } else if (data.success == false) {
              layer.msg(data.msg);
            }
          }
        });
        layer.close(index);
        table.ajax.reload();
      },
      content: '职业:' + '<input type="text" name="" id="zhiy" value=""/>' + '<br>姓名:'
      + '<input type="text" name="" id="name" value=""/>' + '<br>性别:'
      + '<input type="text" name="" id="sex" value=""/>' + '<br>爱好:'
      + '<input type="text" name="" id="aihao" value=""/>'
    });
});
//选中一行触发
$('#example tbody').on('click', 'tr', function () {
    if ($(this).hasClass('selected')) {
      $(this).removeClass('selected');
      adatid = "";
    }
    else {
      table.$('tr.selected').removeClass('selected');
      $(this).addClass('selected');
      adatid = table.row(this).data().guid;
      adata = table.row(this).data().zy;
      bdata = table.row(this).data().xm;
      cdata = table.row(this).data().xb;
      ddata = table.row(this).data().fov;
    }
});
////////////////////////////////////////////////////////////////////////////////////////
//修改
$("#change").click(function () {
    if (adatid === '') {
      alert("请选中要修改的数据");
    } else {
      layer.open({
        type: 1,
        skin: 'layui-layer-rim', //加上边框
        area: ['420px', '240px'], //宽高
        btn: ['确定'],
        yes: function (index, layero) {
          var json = {
            "guid": adatid,
            "zy": $("#cid").val(),
            "xm": $("#cname").val(),
            "xb": $("#csex").val(),
            "fov_ck": $("#cage").val()
          };
          $.ajax({
            type: "POST",
            url: server + "user/updateUser.do",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(json),
            dataType: "json",
            success: function (data) {
              if (data.success == true) {
                layer.msg(data.msg);
              } else if (data.success == false) {
                layer.msg(data.msg);
              }
            }
          });
          layer.close(index);
          table.ajax.reload();
        },
        content: '职业:' + '<input type="text" name="" id="cid"/>' + '<br>姓名:'
        + '<input type="text" name="" id="cname"/>' + '<br>性别:'
        + '<input type="text" name="" id="csex"/>' + '<br>爱好:'
        + '<input type="text" name="" id="cage"/>'
      });
    }
    $("#cid").val(adata);
    $("#cname").val(bdata);
    $("#csex").val(cdata);
    $("#cage").val(ddata);
});
////////////////////////////////////////////////////////////////////////////////
//删除
$("#del").click(function () {
    if (adatid === '') {
      alert("请删除要修改的数据");
    } else {
      var json = {
        "guid": adatid
      };
      $.ajax({
        type: "POST",
        url: server + "user/deleteUser.do",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(json),
        dataType: "json",
        success: function (data) {
          if (data.success == true) {
            layer.msg(data.msg);
          } else if (data.success == false) {
            layer.msg(data.msg);
          }
        }
      });
      table.ajax.reload();
    }
});

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
基于jQuery实现的单行公告活动轮播效果
Aug 23 jQuery
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
Dec 05 jQuery
bootstrap+jquery项目引入文件报错的解决方法
Jan 22 jQuery
jQuery中复合选择器简单用法示例
Mar 31 jQuery
jQuery创建及操作xml格式数据示例
May 26 jQuery
jQuery插件Validation表单验证详解
May 26 jQuery
jquery操作checkbox的常用方法总结【附测试源码下载】
Jun 10 jQuery
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
jquery实现上传文件进度条
Mar 26 jQuery
Jquery ajax书写方法代码实例解析
Jun 12 jQuery
jQuery中event.target和this的区别详解
Aug 13 jQuery
原生jQuery实现只显示年份下拉框
Dec 24 jQuery
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
Apr 17 #jQuery
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 #jQuery
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 #jQuery
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
Apr 12 #jQuery
jQuery实现判断上传图片类型和大小的方法示例
Apr 11 #jQuery
[原创]jQuery实现合并/追加数组并去除重复项的方法
Apr 11 #jQuery
jQuery中复合选择器简单用法示例
Mar 31 #jQuery
You might like
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
webpack优化的深入理解
2018/12/10 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
Python中的高级数据结构详解
2015/03/27 Python
Python生成器(Generator)详解
2015/04/13 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
Python如何计算语句执行时间
2019/11/22 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
详解Python IO编程
2020/07/24 Python
python解包用法详解
2021/02/17 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
UML设计模式笔试题
2014/06/07 面试题
学生逃课万能检讨书2000字
2015/02/17 职场文书
python中的None与NULL用法说明
2021/05/25 Python
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技