关于使用ajax和php实现批量删除功能总结

本文总结了如何使用AJAX和PHP实现批量删除功能,包括前端HTML标记、JS函数绑定和PHP脚本处理。重点强调了在实现过程中遇到的空格错误和SQL中IN操作符的正确用法,提供了问题解决方案和相关参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

看看关键的HTML怎么标记的:

<a href="javascript:;" class="btn btn-danger radius" id="discard"><i class="Hui-iconfont">&#xe6e2;</i> 批量删除</a> 

上图可以看到,通过id绑定JS函数。

<foreach name="list" item="value" >
				<tr class="text-c">
					<td><input type="checkbox" value="{$value['id']}" id="btn"  name="delete"></td>

如上图,循环区的点选按钮也要做标记,比如name属性,好让JS操作

如上图是我的前端界面

 

 

JS代码:

// 删除操作
	  $('#discard').click(function() {
	  	 var cks=document.getElementsByName("delete");
	  	 //console.log(cks);
	  		var str="";
	  		 //拼接所有的id
	            for(var i=0;i<cks.length;i++){
	                if(cks[i].checked){
	                    str+=cks[i].value+",";
	                }
	            }
	            //去掉末尾的&
	            str=str.substring(0, str.length-1);

	        //console.log(str);  

	  	//alert($(':checked').size());
	    if($(':checked').size() > 0) {
	      layer.confirm('确定要删除吗?', {
	        btn: ['确定','取消'], //按钮
	        shade: false //不显示遮罩
	      }, function(){

	      /* 注意:$.ajax和$.post传的参数还是不一样的
			type: "POST",
	         dataType: "json",*/
	        $.post(
	        	"{:U('Article/discard')}",
	          	 {str:str},
	          	 function(result) {

	          if(result.state == 1) {
	            layer.msg(result.message, {icon: 1, time: 1000});
	          } else {
	            layer.msg(res.message, {icon: 2, time: 1000});
	          }
	          setTimeout(function() {
	            location.reload();
	          }, 1000);
	        });
	      }, function(){
	        layer.msg('取消了删除!', {time: 1000});
	      });
	    } else {
	      layer.alert('没有选择!');
	    }
	  });


//批量删除还会有全选的JS操作
	  $('.all').click(function() {
	  	//alert('11');die;
	    if($(this).is(':checked')) {
	      $(':checkbox').attr('checked', 'checked');
	    } else {
	      $(':checkbox').removeAttr('checked');
	    }
	  });

 

 

PHP脚本代码:

 //删除留言
    public function discard() {

           $sstr = $_POST[str];

         /* 注意接收到的不是一个字符串!而是关联数组array(1) {["str"] => string(3) "2,1"},
        所以两种方式取值,1关联索引 2循环数组 取$v
            foreach($str as $k => $v){
            $sstr = $v;
          }*/


           $obj = M('cus_msg'); //实例化User对象,接着做批量删除
       
       /*  一定要注意数据格式 ,批量删除有好几种写法,用模型CURD的delete方法(返回结果条数)可以批量    
         删除;也可以用in方法判断
        */


          $res=$obj->delete($sstr); 
        //dump($res);die;
       //$res=$obj->where(array(id=>array('in',$sstr)))->delete();
   

        //不为空或0就是成功了
          if (!empty($res)) {
          $this->ajaxReturn(array('state'=>1,'message'=>'删除成功!'));
            }else{
          $this->ajaxReturn(array('state'=>0,'message'=>'删除未成功!'));
            }

如图,是否通过审核我也是用ajax异步与数据库交互。

经验注意:

1.PS:$strs = explode ('&',$str);函数中间有空格导致一直报错,让我找了好一会儿bug……==

2.MYSQL查询时,DELETE  FROM `test_cus_msg` WHERE id IN(11,12),in后面的括号里,要么 IN(x,x)要么

in('x','x'),即引号的用法很有讲究……开始写IN(‘x,x,x’)是错的,只能删第一个,不能批量删除……

思路参考了以下博文

https://blog.youkuaiyun.com/zhangguoliang12309/article/details/78793733

https://www.jb51.net/article/76640.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值