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);

 

posted @ 2016-12-28 10:31  Strive-count  阅读(2846)  评论(0编辑  收藏  举报