Ajax实现无刷新表格实时编辑

  简单的jQuery Ajax表格实时编辑功能,点击单元格数据即可实时编辑更新数据,无需刷新跳转页面。

  index.html

<!DOCTYPE html>
<html lang="utf-8">
	<head>
		<meta charset="UTF-8">
		<title>Ajax 表格实时编辑</title>
		<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
		<style>
			table {
				width: 600px;
				margin: 30px;
				border-collapse: collapse;
			}

			td,
			th {
				border: 1px solid #ccc;
				padding: 8px;
				text-align: left;
			}

			input {
				width: 90%;
				padding: 4px;
				font-size: 14px;
			}
		</style>
	</head>
	<body>

		<h3 style="margin:30px;">表格实时编辑(点击编辑)</h3>
		<table id="dataTable">
			<thead>
				<tr>
					<th>ID</th>
					<th>姓名</th>
					<th>部门</th>
					<th>工资</th>
				</tr>
			</thead>
			<tbody id="tableBody"></tbody>
		</table>

		<script>
			$(function() {
				loadTable();
			});

			// 加载表格数据
			function loadTable() {
				$.get("edit_api.php?action=list", function(res) {
					$("#tableBody").html(res);
				});
			}

			
			// 点击单元格变输入框
			$(document).on("click", "td[field]", function() {
				let td = $(this);

				if (td.find('input').length > 0) {
					return;
				}

				let field = td.attr("field");
				let id = td.parent().data("id");
				let oldVal = td.text().trim();

				td.html('<input type="text" value="' + oldVal + '" data-id="' + id + '" data-field="' + field + '">');
				td.find("input").focus().select();
			});

			// 失去焦点保存
			$(document).on("blur", "td input", function() {
				let input = $(this);
				let id = input.data("id");
				let field = input.data("field");
				let val = input.val().trim();

				$.post("edit_api.php", {
					action: "update",
					id: id,
					field: field,
					value: val
				}, function(res) {
					input.parent("td").html(val);
				});
			});
		</script>
	</body>
</html>

  edit_api.php

<?php
header("Content-type:text/html; charset=utf-8");

// 数据文件
$dataFile = 'data.txt';

// 文件不存在时创建数据
function initData() {
    global $dataFile;
    $defaultData = [
        1 => ['name' => '张三', 'dept' => '技术部', 'salary' => '8000'],
        2 => ['name' => '李四', 'dept' => '市场部', 'salary' => '7500'],
        3 => ['name' => '王五', 'dept' => '人事部', 'salary' => '6500'],
        4 => ['name' => '赵六', 'dept' => '财务部', 'salary' => '9000'],
        5 => ['name' => '孙七', 'dept' => '运营部', 'salary' => '7000']
    ];

    if (!file_exists($dataFile)) {
        file_put_contents($dataFile, json_encode($defaultData, JSON_UNESCAPED_UNICODE));
    }

    $data = json_decode(file_get_contents($dataFile), true);
    return is_array($data) ? $data : $defaultData;
}

// 保存数据到文件
function saveData($data) {
    global $dataFile;
    file_put_contents($dataFile, json_encode($data, JSON_UNESCAPED_UNICODE));
}

// 读取数据
$data = initData();
$action = $_REQUEST['action'] ?? '';

// 输出表格
if ($action == 'list') {
    foreach ($data as $id => $row) {
        echo "<tr data-id='$id'>
                <td>$id</td>
                <td field='name'>{$row['name']}</td>
                <td field='dept'>{$row['dept']}</td>
                <td field='salary'>{$row['salary']}</td>
              </tr>";
    }
    exit;
}

// 实时更新并写入 data.txt
if ($action == 'update') {
    $id = $_POST['id'];
    $field = $_POST['field'];
    $value = $_POST['value'];

    $data = initData();
    $data[$id][$field] = $value; // 修改对应字段
    saveData($data); // 写入文件

    echo "success";
    exit;
}

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

jQuery为当前栏目导航添加CSS样式
上一篇 2015-11-06
亚泰加油
下一篇 2016-05-29

评论列表(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实现文章列表指定行后插入广告

      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实现文件列表和缩略图模式切换

      做一个简单的仿网盘前端页面,实现文件以列表模式和缩略图模式切换功能。 &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.jquery.com/jquery-1......

    2015-03-09
    17250
  • jQuery Ajax无刷新批量删除数据功能

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

    2015-06-15
    21340
  • 使用 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
  • PHP实现相关文章推荐功能

      实现相关文章推荐功能通常需要使用更高级的推荐系统算法,对于查询到的相关文章,需要计算它们与当前文章的相似度。相似度可以根据文章的内容、标题、标签等属性进行计算。可以使用文本相似度算法(如余弦相似度、Jaccard相似度等)或基于内容的推荐算法来计算相似度。   假设有一个包含文章信息的数据库表 articles: CREATE TABLE articles ( id INT PRIMARY KEY, title VA......

    2021-05-24
    17410