Layui + jQuery无刷新增删改查功能

  使用Layui框架可以让后台管理功能开发更高效,UI风格更统一美观。简单介绍一下Layui+jQuery开发无刷新数据操作功能的原理,支持数据查询,增加,修改,删除(包括批量删除)。

  index.html

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8">
		<title>Layui 无刷新增删改查</title>
		<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/layui/2.4.3/css/layui.css">
		<script src="https://cdn.bootcdn.net/ajax/libs/layui/2.4.3/layui.js"></script>
		<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
	</head>
	<body>
		<div style="padding:20px;">
			<fieldset class="layui-elem-field layui-field-title">
				<legend>Layui + AJAX 无刷新增删改查</legend>
			</fieldset>

			<div class="layui-form-item">
				<button class="layui-btn layui-btn-normal" id="addBtn">添加数据</button>
				<button class="layui-btn layui-btn-danger" id="batchDel">批量删除</button>
			</div>

			<table class="layui-table" lay-size="sm">
				<thead>
					<tr>
						<th><input type="checkbox" lay-skin="primary" id="checkAll"></th>
						<th>ID</th>
						<th>姓名</th>
						<th>部门</th>
						<th>操作</th>
					</tr>
				</thead>
				<tbody id="dataList"></tbody>
			</table>
		</div>

		<script>
			layui.use(['layer', 'form'], function() {
				const layer = layui.layer;
				const form = layui.form;

				$(function() {
					loadList();
				});

				// 加载列表
				function loadList() {
					$.get('lay_api.php?action=list', function(res) {
						$('#dataList').html(res);
						form.render('checkbox');
					});
				}

				// 全选
				$('#checkAll').click(function() {
					let ck = $(this).prop('checked');
					$('.ids').prop('checked', ck);
					form.render('checkbox');
				});

				// 添加数据
				$('#addBtn').click(function() {
					layer.open({
						type: 1,
						title: '添加数据',
						area: ['350px', '250px'],
						content: `<div style="padding:20px;">
        <div class="layui-form-item">
          <label class="layui-form-label">姓名</label>
          <div class="layui-input-block">
            <input type="text" id="name" class="layui-input" placeholder="请输入姓名">
          </div>
        </div>
        <div class="layui-form-item">
          <label class="layui-form-label">部门</label>
          <div class="layui-input-block">
            <input type="text" id="dept" class="layui-input" placeholder="请输入部门">
          </div>
        </div>
        <div style="text-align:center;">
          <button class="layui-btn" id="submitAdd">确认添加</button>
        </div>
      </div>`
					});

					// 提交添加
					$(document).on('click', '#submitAdd', function() {
						let name = $('#name').val();
						let dept = $('#dept').val();
						if (!name || !dept) {
							layer.msg('请填写完整', {
								icon: 2
							});
							return;
						}
						$.post('lay_api.php', {
							action: 'add',
							name: name,
							dept: dept
						}, function() {
							layer.msg('添加成功', {
								icon: 1
							});
							loadList();
							layer.closeAll();
						});
					});
				});

				// 修改数据
				$(document).on('click', '.editBtn', function() {
					let id = $(this).data('id');
					let oldName = $(this).data('name');
					let oldDept = $(this).data('dept');

					layer.open({
						type: 1,
						title: '修改',
						area: ['350px', '250px'],
						content: `<div style="padding:20px;">
        <div class="layui-form-item">
          <label class="layui-form-label">姓名</label>
          <div class="layui-input-block">
            <input type="text" id="edit_name" value="${oldName}" class="layui-input">
          </div>
        </div>
        <div class="layui-form-item">
          <label class="layui-form-label">部门</label>
          <div class="layui-input-block">
            <input type="text" id="edit_dept" value="${oldDept}" class="layui-input">
          </div>
        </div>
        <div style="text-align:center;">
          <button class="layui-btn" id="submitEdit">确认修改</button>
        </div>
      </div>`
					});

					$(document).on('click', '#submitEdit', function() {
						let name = $('#edit_name').val();
						let dept = $('#edit_dept').val();
						$.post('lay_api.php', {
							action: 'edit',
							id: id,
							name: name,
							dept: dept
						}, function() {
							layer.msg('修改成功', {
								icon: 1
							});
							loadList();
							layer.closeAll();
						});
					});
				});

				// 删除数据
				$(document).on('click', '.delBtn', function() {
					let id = $(this).data('id');
					layer.confirm('确定删除?', function() {
						$.post('lay_api.php', {
							action: 'del',
							id: id
						}, function() {
							layer.msg('删除成功', {
								icon: 1
							});
							loadList();
						});
					});
				});

				// 批量删除
				$('#batchDel').click(function() {
					let ids = [];
					$('.ids:checked').each(function() {
						ids.push($(this).val());
					});
					if (ids.length == 0) return layer.msg('请选择数据', {
						icon: 2
					});

					layer.confirm('确定删除选中项?', function() {
						$.post('lay_api.php', {
							action: 'batchdel',
							ids: ids
						}, function() {
							layer.msg('批量删除成功', {
								icon: 1
							});
							loadList();
						});
					});
				});
			});
		</script>
	</body>
</html>

  lay_api.php

<?php
header("Content-type:text/html; charset=utf-8");
$file = 'data.txt';

// 初始化数据
function initData(){
  global $file;
  $default = [
    1 => ['name'=>'张三','dept'=>'技术部'],
    2 => ['name'=>'李四','dept'=>'市场部'],
    3 => ['name'=>'王五','dept'=>'人事部'],
    4 => ['name'=>'赵六','dept'=>'财务部'],
  ];
  if(!file_exists($file)){
    file_put_contents($file, json_encode($default, JSON_UNESCAPED_UNICODE));
  }
  $data = json_decode(file_get_contents($file), true);
  return is_array($data) ? $data : $default;
}

// 保存
function saveData($arr){
  global $file;
  file_put_contents($file, json_encode($arr, JSON_UNESCAPED_UNICODE));
}

$data = initData();
$action = $_REQUEST['action'] ?? '';

// 列表
if($action == 'list'){
  foreach($data as $id=>$row){
    echo "
    <tr>
      <td><input type='checkbox' class='ids' lay-skin='primary' value='$id'></td>
      <td>$id</td>
      <td>{$row['name']}</td>
      <td>{$row['dept']}</td>
      <td>
        <button class='layui-btn layui-btn-xs editBtn' data-id='$id' data-name='{$row['name']}' data-dept='{$row['dept']}'>编辑</button>
        <button class='layui-btn layui-btn-xs layui-btn-danger delBtn' data-id='$id'>删除</button>
      </td>
    </tr>";
  }
  exit;
}

// 添加
if($action == 'add'){
  $name = $_POST['name'];
  $dept = $_POST['dept'];
  $id = time();
  $data[$id] = [
    'name' => $name,
    'dept' => $dept
  ];
  saveData($data);
  exit('ok');
}

// 修改
if($action == 'edit'){
  $id = $_POST['id'];
  $data[$id]['name'] = $_POST['name'];
  $data[$id]['dept'] = $_POST['dept'];
  saveData($data);
  exit('ok');
}

// 删除
if($action == 'del'){
  $id = $_POST['id'];
  unset($data[$id]);
  saveData($data);
  exit('ok');
}

// 批量删除
if($action == 'batchdel'){
  $ids = $_POST['ids'];
  foreach($ids as $id){
    unset($data[$id]);
  }
  saveData($data);
  exit('ok');
}

本站原创内容,转载请注明来源:https://www.liutonghui.com/163

替换织梦DedeCMS首页轮播图Flash组件为图片
上一篇 2018-06-07
个人站长该何去何从
下一篇 2018-11-21

评论列表(0条)

  • 暂无评论

发表评论

captcha

相关推荐

  • PHP动态滚屏无刷新加载数据

      滚屏加载,也称为滚动加载或懒加载,是一种网页设计技术,当用户滚动页面时,新内容会自动加载,无需点击&ldquo;下一页&rdquo;按钮。这种技术提高了用户体验,尤其是在处理大量数据时,如社交媒体、新闻网站和电子商务平台。   滚屏加载技术,就是使用Javascript监视滚动条的位置,每次当滚动条到达浏览器窗口底部时,触发一个Ajax请求后台PHP程序,返回相应的数据,并将返回的数据追加到页面底部,从而实现了动态加载,其实就是一个......

    2013-10-24
    22240
  • 基于jQuery+JSON的省市区三级无刷新联动

      省市区联动下拉效果在WEB应用中使用非常广泛,尤其在一些会员信息系统、电商网站最为常见,开发者一般使用AJAX实现无刷新下拉联动。本文将讲述利用jQuery插件,通过读取JSON数据,实现无刷新动态下拉省市二(三)级联动效果。   HTML   首先在head中载入jquery库和cityselect插件。 &lt;script type="text/javascript" src="js/jquery.js"&gt;&lt;/sc......

    2013-12-09
    17480
  • jQuery制作图片浮动放大,鼠标滚轮缩放功能

      点击图片居中放大显示,背景半透明遮罩,鼠标滚轮可缩放图片大小,再次点击图片恢复原始大小并关闭。 &lt;!DOCTYPE html&gt; &lt;html lang="zh-CN"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;图片点击放大居中+滚轮缩放&lt;/title&gt; &lt;script src="https://code.jqu......

    2014-08-10
    17270
  • jQuery实现文章列表指定行后插入广告

      jQuery插入广告位功能:可指定固定位置,第几行后插入广告和随机某一行后插入广告,每次刷新位置不一样两种模式。 &lt;!DOCTYPE html&gt; &lt;html lang="zh-CN"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;文章列表插入广告&lt;/title&gt; &lt;script src="https://code......

    2014-09-12
    12250
  • jQuery Ajax无刷新数据增删改查功能

      一套简单的无刷新数据增删改查功能,基于jQuery Ajax异步请求技术,后端使用PHP处理数据并返回结果给前端,实现页面无刷新,不跳转对数据增删改查操作。   index.html &lt;!DOCTYPE html&gt; &lt;html lang="zh-CN"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;AJAX 无刷新增删改查&lt;/t......

    2014-11-16
    20100
  • jQuery Ajax无刷新批量删除数据功能

      在 jQuery 中使用 Ajax 实现批量删除的基本思路,使用 jQuery 监听&ldquo;批量删除&rdquo;按钮的点击事件,收集用户选择的要删除的项目的标识(例如,ID)。   使用 Ajax 发送异步请求到后端,将要删除的项目标识传递给服务器。在后端,接收到请求后,根据接收到的项目标识进行删除操作,并返回相应的结果给前端。   以下是一个简单的示例代码:   index.html &lt;!DOCTYPE html&g......

    2015-06-15
    21340
  • Ajax实现无刷新表格实时编辑

      简单的jQuery Ajax表格实时编辑功能,点击单元格数据即可实时编辑更新数据,无需刷新跳转页面。   index.html &lt;!DOCTYPE html&gt; &lt;html lang="utf-8"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Ajax 表格实时编辑&lt;/title&gt; &lt;script src="ht......

    2016-02-20
    12260
  • 使用 Layui 和 jQuery 实现表单验证

      对于 Layui 表单验证,可以结合 jQuery 使用 Layui 的验证规则。以下是一个示例,展示了如何使用 Layui 和 jQuery 实现用户名、密码、手机号、邮箱、身份证号的表单验证: &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta name="viewport" con......

    2020-06-14
    21380