效果图:

建表:company

DROP TABLE IF EXISTS `company`;
CREATE TABLE `company` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`company_name` varchar(255) DEFAULT NULL,
`lxr` varchar(255) DEFAULT NULL,
`tel` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`user` varchar(255) DEFAULT NULL,
`pwd` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=gbk;

展示页面:show.php
代码:

<?php
// 连接数据库
$conn = mysqli_connect('127.0.0.1', 'root', '123456', '12a');
// 设置编码方式:sql语句
$result = mysqli_query($conn, "set names utf8");
$sql = "select * from company";
// 查询结果集
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
$data[] = $row;
}
?>
<html>
<meta charset="utf-8">
<title>ajax即点即改</title>
<body>
<h1>人员信息</h1>
<table border="1px solid">
<tr>
  <th></th>
  <th>id</th>
  <th>用户名</th>
  <th>联系人</th>
  <th>手机号</th>
  <th>邮箱</th>
  <th>单位名称</th>
  <th>操作</th>
</tr>
<?php foreach ($data as $k => $v) {?>
<tr id="st_<?php echo $v['id'] ?>">
  <td>
    <input type="checkbox" name="usercheck" value="<?php echo $v['id'] ?>">
  </td>
  <td><?php echo $v['id'] ?></td>
  <td><?php echo $v['user'] ?></td>
  <td><?php echo $v['lxr'] ?></td>
  <td><?php echo $v['tel'] ?></td>
  <td><?php echo $v['email'] ?></td>
  <td>
    <span id="dian_<?php echo $v['id'] ?>" onclick="changeme(<?php echo $v['id'] ?>)">
      <?php echo $v['company_name'] ?>
    </span>
    <input type="hidden" id="input_<?php echo $v['id'] ?>" onblur="doit(<?php echo $v['id'] ?>)">
  </td>
  <td onclick="del(<?php echo $v['id'] ?>)">删除</td>
</tr>
<?php }?>
</table>
<input type="checkbox" id="checkall" onclick="ckAll()">全选/全不选
<button onclick="delall()">批量删除</button>
</html>
<script>
//全选
function ckAll(){
// 获取全选按钮的状态,让上面的按钮的选中状态和它的状态相同,
  var flag=document.getElementById("checkall").checked;
  var cks=document.getElementsByName("usercheck");
  for(var i=0;i<cks.length;i++){
    cks[i].checked=flag;
  }
}
function del(id){
// 实例化ajax对象
  var xhr=new XMLHttpRequest();
// 打开一个请求
  xhr.open("get","do_delete.php?id="+id);
// 发送请求
  xhr.send();
// 监听状态是否变化,状态改变事件
  xhr.onreadystatechange=function(){
// 请求成功。以及响应结束
    if(xhr.status==200&&xhr.readyState==4){
      if(xhr.responseText=='删除成功'){
        alert('删除成功')
        document.getElementById("st_"+id).innerHTML=""
      };
    }
  }
}

// 即点即改
function changeme(id){
// 获取span节点
  var span_node = document.getElementById('dian_'+id)
// 获取input节点
  var input_node = document.getElementById('input_'+id)
// 1、点击让span 隐藏,让input 显示出来
  span_node.style.display="none" // 一定是双引号,span标签隐藏
  input_node.type="text"
}

function doit(id){
// 获取span节点
  var span_node = document.getElementById('dian_'+id)
// 获取input节点
  var input_node = document.getElementById('input_'+id)
// 获取input节点中的 value值
  var input_value = input_node.value
// 如果输入值非空,input框隐藏,值显示在span标签中
  if (input_value) {
    span_node.style.display="block"
    input_node.type="hidden" //input框隐藏
// ajax发送请求,更改数据库
    var xhr = new XMLHttpRequest();
    xhr.open('get','update.php?cname='+input_value+'&id='+id)
    xhr.send()
    xhr.onreadystatechange=function(){
      if (xhr.readyState==4&&xhr.status==200) {
// 值显示在span标签中
        span_node.innerHTML=input_value
      }
    }
  }
}
// 批量删除
function delall() {
  var usercheck = document.getElementsByName("usercheck");
// 获取总共有多少个checkbox
  var len = usercheck.length;
  var flag = false;
  var str="";

  var arr=new Array();

  for (var i = 0; i < len; i++) {
    if (usercheck[i].checked) {
      // console.log(usercheck[i].value)//拼接id    

      arr.push(usercheck[i].value

      str=str+','+usercheck[i].value,

      flag = true;
    }
  }
  
if (!flag) {
    alert('至少选择一个');
    return;
  }
// 截取字符串,去除第一个逗号,
  var id = str.substr(1);
// 实例化ajax对象
  var xhr=new XMLHttpRequest();
// 打开一个请求
  xhr.open("get","do_delete.php?id="+id);
// 发送请求
  xhr.send();
// 监听状态是否变化
 
 xhr.onreadystatechange=function(){
// 请求成功。以及响应结束
    if(xhr.status==200&&xhr.readyState==4){

        for (var i = 0; i < arr.length; i++) {
          id = arr[i]
          document.getElementById("st_"+id).innerHTML=""
        }

    }
  }
}
</script>

单删文件:do_delete.php
代码:

<?php
// 连接数据库
$link = mysqli_connect('127.0.0.1', 'root', '123456', '12a');
// 接收参数id,要删除的额数据的id
$id = $_GET['id'];

$sql = "delete from company where id in ($id)";

// 执行删除

$st = mysqli_query($link, $sql);
if ($st) {
  echo "删除成功";
} else {
  echo "删除失败";
}

?>

//即点即改更新数据库,文件:update.php

<?php
// 连接数据库
$link = mysqli_connect('127.0.0.1', 'root', '123456', '12a');
$id = $_GET['id'];
$cname = $_GET['cname'];
$sql = "update company set company_name='$cname' where id=$id";
$st = mysqli_query($link, $sql);
if ($st) {
  echo "更改成功";
} else {
  echo "更改失败";
}

?>

原生PHP+原生ajax批量删除(超简单),ajax删除,ajax即点即改,完整代码,完整实例的更多相关文章

  1. Android超简单气泡效果

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680最近有用到水下气泡上升效果,因此在网上查了一下资料,结果还真找到了 ...

  2. 原生JS取代一些JQuery方法的简单实现

    原生JS取代一些JQuery方法的简单实现 下面小编就为大家带来一篇原生JS取代一些JQuery方法的简单实现.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧   1.选 ...

  3. 用C#Winform写个简单的批量清空文件内容和删除文件的小工具

    用C#Winform写个简单的批量清空文件内容和删除文件的小工具 本文介绍这个简单得不能再简单的小项目.做这个项目,有以下目的. 1 当然是做个能用的工具 2 学习使用Github 关于用VS2013 ...

  4. ASP.NET中一种超简单的Ajax解决方案

    为什么是Ajax2? 因为之前有一个blqw.Ajax,并且已经在项目中投入使用了,但是没有这个方便,这个是后来才弄的,为了纪念第一版的blqw.Ajax,所以这个就2了... 话说看了评论才发现,原 ...

  5. ajax批量删除功能的实现源代码

    效果展示: 完整代码如下: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charse ...

  6. 超简单!80行代码实现Google日历(拖放、移动、AJAX)

    介绍 本实例介绍使用DayPilot Lite for ASP.NET MVC library 类来实现类google日历效果. 在线实例 天视图  星期视图  拖放调整  拖放移动  行代码来实现a ...

  7. 使用jQuery通过点击它删除HTML表格行-超简单

    jQuery的已成为所有时刻的最常用和最喜爱的JavaScript框架之一.它不仅不会减少在JavaScript编码简单的技术开销,而且也使您的代码的跨浏览器兼容.我已经写了许多关于jQuery教程, ...

  8. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

  9. 超简单使用批处理(batch)操作数据库

    超简单使用批处理(batch)操作数据库 批处理(batch)是什么 批处理的执行就好比快递员的工作: 未使用批处理的时候,快递员一次从分发点将一件快递发给客户: 使用批处理,则是快递员将所有要派送的 ...

随机推荐

  1. k8s-jenkins x CI/CD 动态创建slave---01

    jenkins CI/CD(动态创建slave)简述: 由于之前管理kubernetes集群应用发布,用的是Gitlab-CI,用作开发环境管理还可以,生产环境管理发布,缺点太多,打包速度很慢.研究新 ...

  2. IOS手机 html5页面 数字变成蓝色链接的原因

    IOS手机 html5页面 数字变成蓝色链接的原因 这个是ios手机自动识别 写如下代码 即可<pre> <meta name="format-detection" ...

  3. vertica 中位数函数 MEDIAN 的使用

    中位数函数:MEDIAN 使用表达式:MEDIAN ( expression ) OVER ( [ window‑partition‑clause ] ) 准备测试数据: ), name ), sal ...

  4. IDEA 2019注册码(2020年4月过期)

    IDEA 2019注册码(2020年4月过期) 812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mII ...

  5. [转帖]k8s 中的服务如何沟通

    k8s 中的服务如何沟通 https://www.jianshu.com/p/9fae09876eb7 本文将介绍 k8s 中的服务如何相互访问,例如后端服务访问数据库,不同类型的服务间的相互访问.并 ...

  6. python输入一个字符串,输出翻转后的字符串(翻转字符串)

    题目:输出一个字符串,输出翻转后的字符串.例如:输入字符串a123,输出321a. 方法一:使用列表的reverse方法 string=input('请输入一个字符串:') lst=list(stri ...

  7. Blend 设置通明窗体

    原文:Blend 设置通明窗体 这篇开始到下周周一 更新WPF blend 和MVVM模式的博客  因为新入职的公司主要去做WPF的工作 一边整理学习  一遍回顾   但是CSDN 限制每天10篇  ...

  8. Python关于多继承

    大部分面向对象的编程语言(除了C++)都只支持单继承,而不支持多继承,为什么呢?因为多继承不仅增加编程复杂度,而且容易导致莫名其妙的错误. Python虽然语法上支持多继承,但是却不推荐使用多继承,而 ...

  9. ElementUI如何展开指定Tree树节点

    原文:https://blog.csdn.net/gaojie_csdn/article/details/80738488 [问题] 在页面使用ElementUI的时候,想做出一个主动展开树节点的效果 ...

  10. C#实现outlook自动签名

    Outlook下实现自动签名的方式   网上找到一篇资料是在outlook里用vba实现的,但是这样实现的方式由于数字认证的问题不便于部署 在此介绍一种C#下实现的方式,目前确定的outlook版本为 ...