confirm对话框取消后阻止ajax操作、ajax做批量删除
在做批量删除的时候,需要用confirm弹出一个提示框让用户确认是否删除,点击确定,执行操作,点击取消,取消操作。但是如果使用ajax把选中项的主键值传到处理页面处理时,如果使用下面的方法将confirm直接写在按钮里面,在点击取消后,ajax会继续执行操作,删除选中项。
1.confirm错误写法:
<button type="button" onclick="return confirm('确定删除选中项吗!')" id="piliang" class='btn btn-primary btn-lg' data-target='#myModal'>批量删除</button>
2.可以用下面的方法将confirm写在js里面,可以避免这个问题。
(1)按钮代码
<button type="button" id="piliang" class='btn btn-primary btn-lg' data-target='#myModal'>批量删除</button>
(2)js代码
$("#piliang").click(function(){ var statu = confirm("确认删除选中项吗!");//在js里面写confirm,在页面中弹出提示信息。 if(!statu)//如果点击的是取消 { return false;//返回页面 } else{//如果点击确定,就继续执行下面的操作 var attr = new Array();//建立一个数组 $(".qx").each(function() {//each循环遍历出所有的复选框 if($(this).prop("checked")) //判断被循环的.ck是否被选中 { attr.push($(this).attr("value")); //去value的属性取到该项数据的主键值,扔到数组attr里面 } }); var stra = attr.join("','");//把attr数组里的lie[0]用 ',' 拆分 $.ajax({ url:"../chuli/deletepiliang.php", data:{stra:stra},//把拆分后的数组传到处理页面,数据的格式为 主键1','主键2','主键3 这里看似少了最外面的2个'',带着这个疑问去看处理页面 type:"POST", dataType:"TEXT", success: function(data){ window.location.href="guanliry.php"; } }); } })
3.处理页面deletepiliang.php
<?php session_start(); include("../libs/DBDA.php"); $db = new DBDA(); $attr = ($_POST["stra"]);//取传过来的选定的主键值 $sql = "delete from jx_user where uid in('{$attr}')";//把上面的缺少最外面的''的字符串放到这里,('{$attr}')中的{$attr}就是拿过来的字符串,外面的''正好弥补了缺少的''。 $db->query($sql,0);