Ajax实现表格实时编辑

如果我们的对于一个表格中所有的数据都能在本页进行操作那该是多酷炫的一件事(用起来炒鸡爽)!

用Ajax就可以实现这个功能啦。废话不多说,下面贴出我写的demo吧哈哈。我用的TP框架(3.2)比较习惯啦。

首先是HTML代码部分:

#####################################################################

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>AJAX实时编辑</title>
<script src="__PUBLIC__/jquery-1.7.2.min.js"></script>
</head>
<body>
<center>
<table border="1" width="1000" id="g_table">
<tr>
<!-- <th>ID</th> -->
<th>TAB1</th>
<th>TAB2</th>
<th>TAB3</th>
<th>TAB4</th>
<th><span onclick="add()">添加</span></th>
</tr>
<foreach name="tablist" item="vv">
<tr>
<!-- <td>{$vv.id}</td> -->
<input type="hidden" name="id" value="{$vv.id}">
<td>{$vv.tab1}</td>
<td>{$vv.tab2}</td>
<td>{$vv.tab3}</td>
<td>{$vv.tab4}</td>
<td><span onclick="del(this)" id="del">删除</span><span onclick="edit(this)" id="edit">修改</span></td>
</tr>
</foreach>
</table>
</center>
</body>
<script>
var g_table = $("#g_table");
function add(){
var addRow = $("<tr></tr>");

g_table.append(addRow);
for(var i = 0;i < 4;i++){
var col_td = $("<td><input type=‘text‘ /></td>");
addRow.append(col_td);
}
var col_opt = $("<td></td>");
var confirmBtn = $("<a href=‘javascript:;‘>确认</a>");
var cancelBtn = $("<a href=‘javascript:;‘>取消</a>");
cancelBtn.click(function(){
window.location.reload();
});
confirmBtn.click(function(){
var currentRow = $(this).parent().parent();
var input_files = currentRow.find("input");
var post_files = {};
for(var i = 0 , j = input_files.length;i < j;i++){
post_files[‘clo_‘ + i] = input_files[i].value;
}
// $.post("{:U(‘ajax/add‘)}",post_files,function(msg){
// debugger;
// })
$.ajax({
type: ‘post‘,
url : "{:U(‘ajax/add‘)}",
data: {post_files},
success:function(msg){
alert(msg);
window.location.reload();
}
})
});
col_opt.append(confirmBtn);
col_opt.append(cancelBtn);
addRow.append(col_opt);
}
function del(obj){
var id = $(obj).parent().prev().prev().prev().prev().prev().val();
$.ajax({
type: ‘post‘,
url: "{:U(‘ajax/del‘)}",
data: {id:id},
success:function(msg){
alert(msg);
}
})
$(obj).parent().parent().remove();
}
function edit(obj){
var id = $(obj).parent().prev().prev().prev().prev().prev().val();
for(var i = 1;i < 5;i++){
var temp = "<td><input type=‘text‘ value=‘" + $(obj).parent().parent().children().eq(i).html() + "‘/></td>";
$(obj).parent().parent().children().eq(i).replaceWith(temp);
}
var confirmBtn1 = $("<span id=‘confirm‘>确认</span>");
var cancelBtn1 = $("<span onclick=‘back()‘>取消</span>");
confirmBtn1.click(function(){
var currentRow = $(this).parent().parent();
var input_files = currentRow.find("input");
var post_files = {};
for(var i = 0 , j = input_files.length;i < j;i++){
post_files[‘clo_‘ + i] = input_files[i].value;
}
$.ajax({
type: ‘post‘,
url : "{:U(‘ajax/edit‘)}",
data: {post_files:post_files,id:id},
success:function(msg){
alert(msg);
window.location.reload();
}
})
});
$(obj).prev().replaceWith(confirmBtn1);
$(obj).replaceWith(cancelBtn1);

}

function back(){
location.reload();
}
</script>
</html>

#####################################################################

下面是控制器中的代码:

<?php

namespace Home\Controller;
use Think\Controller;
class AjaxController extends Controller{
public function index(){
$tab = M(‘table‘);
$tablist = $tab->select();
$this->assign(‘tablist‘,$tablist);
$this->display();
}
public function del(){
$map[‘id‘] = $_POST[‘id‘];
$tab = M(‘table‘);
$info = $tab->where($map)->delete();
if($info){
$this->ajaxReturn("删除成功");
}else{
$this->ajaxReturn("删除失败");
}

}
public function add(){

$map[‘tab1‘] = $_POST[‘post_files‘][‘clo_0‘];
$map[‘tab2‘] = $_POST[‘post_files‘][‘clo_1‘];
$map[‘tab3‘] = $_POST[‘post_files‘][‘clo_2‘];
$map[‘tab4‘] = $_POST[‘post_files‘][‘clo_3‘];
$tab = M(‘table‘);
$res = $tab->add($map);
if($res){
$this->ajaxReturn("添加成功");
}else{
$this->ajaxReturn("添加失败");
}

}
public function edit(){
$id = $_POST[‘id‘];
$map[‘tab1‘] = $_POST[‘post_files‘][‘clo_1‘];
$map[‘tab2‘] = $_POST[‘post_files‘][‘clo_2‘];
$map[‘tab3‘] = $_POST[‘post_files‘][‘clo_3‘];
$map[‘tab4‘] = $_POST[‘post_files‘][‘clo_4‘];
// dump($map);exit;
$tab = M(‘table‘);
$res = $tab->where(‘id=‘.$id)->save($map);
if($res){
$this->ajaxReturn("更新成功");
}else{
$this->ajaxReturn("更新失败");
}
}
}

#####################################################################

数据库建表我就不贴啦,自己想咋建就咋建(你开心就好嘻嘻)

时间: 2024-10-13 21:35:02

Ajax实现表格实时编辑的相关文章

可编辑的表格:jQuery+PHP实现实时编辑表格字段内容

在本例中,我们会通过jQuery实现单击将一个文本信息变为可编辑的表单,你可以对文本内容进行编辑,然后点击“确定”按钮,新的内容将发送到后台PHP程序处理,并保存到数据库:当点击“取消”按钮,则页面恢复到初始状态. 查看演示 下载源码 本例适用场景:当查看详细资料,如用户详情信息,发现其中某几个字段信息需要修改,可直接点击该字段内容进行修改,节约了用户时间,(传统的做法是进入一个编辑页面,列出所有编辑的字段信息,即使你只需要编辑其中一两个字段内容,然后点击提交)提高了WEB响应速度,从而提高了前

js实现对表格即时编辑。

当页面中存在表格时,表格里的默认内容是在代码中写入的,如果想要在页面上对表格的内容进行编辑修改,应该怎么作? 大体思路为对表格添加点击事件,在点击某个单元格时,给里面添加一个input框,然后当这个input框失去焦点时,将input框里的内容传到原来的单元格里就好了. <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>表格即时编辑效果</title

Linqpad使用(调试Linq、结合linq调试业务场景、表格内编辑数据)

linqpad是一款linq语句调试工具,功能如下: 1.直接执行linq语句并查看生成的原生sql语句 2.可结合linq+C#代码进行业务场景调试 3.表格内直接新增.修改.删除数据 4.直接执行SQL语句 官方下载网站:http://www.linqpad.net/ 版本分别: Free:免费版,提供最基本的功能 Premium:高级版,需要购买,提供智能提示功能(非常重要,可自行搜索下载) 以Sqlserver的Northwind数据库为例,讲解一下使用方法: 一.执行简单的linq语句

小技巧-使用notepad++实时编辑salt配置文件

需求 在使用salt调试服务器初期,会进行大量的实验,这个就需要快速的对salt的state进行编辑更改,而且linux的vi中显然不合适,最好是需要清晰的文档目录结构. 这样在编辑时可以更快的切换各个目录 寻觅 本人以前做配置变更会用到MobaXterm Personal Edition的sftp模块,比较好用,缺点就是没有目录结构 最后瞄准了notepad++ ,发现可以实现 开工 打开notepad++: 1.插件-NPPFTP-Show FTP Window,然后在右侧能看到一个FTP的

SharePoint 2013 Ajax 造成页面无法编辑

原文:SharePoint 2013 Ajax 造成页面无法编辑 1.如下图,在编辑页面的时候,出现如下错误“此网页自上次打开后已被修改,必须再次打开该网页”,页面上没有什么特别的设置,就是default.aspx: 2.编辑之前页面,只有一个内容编辑器部件,和若干关闭部件,如下图: 3.加上contents=1,进入web部件页维护,关闭我添加的内容编辑器部件,如下图: 4.再次编辑页面,发现OK了: 5.而后发现aspx页面,去掉前台的body.head.等一系列标签,就没问题了,或者直接用

Swift - 给表格添加编辑功能(删除,插入)

1,下面的样例是给表格UITableView添加编辑功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,第一个分组处于删除状态,第二个分组处于插入状态 (3)点击删除图标,删除对应条目 (4)点击添加图标,插入一条新数据 2,效果图           3,代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 3

ajax json 表格排序,分页,自定义每页数量

ajax json 表格排序,分页,自定义每页数量 点击表头可以排序,按照升序或者降序,另外支持多列排序 设置每页数量 演示 XML/HTML Code <table id='example3'> <thead> <tr> <th>ID</th> <th>First name</th> <th>Last name</th> <th>Grade</th> <th>G

swift - 表格的编辑功能(添加、删除)

表格(tableview)的确是一个很好用的控件,现在来实现一个编辑功能的实现,包含添加和删除,删除包括长按删除和左滑删除 效果图如下: 具体代码如下: 1.创建表格(这个表格有2个区,有区头和区尾),以及长按手势的方法绑定 class TenthViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UIGestureRecognizerDelegate { var tableView:UITable

Ajax动态表格,可适时添加行、删除行、复制行

Ajax实现的一个动态表格,可适时添加数据行.删除数据行.复制行,不管行内是否有数据它都可以复制,也可以提交,不过要配合你的提交页面才行,用到你的设计中也是不错的哦. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="ht