AJAX实现弹窗显示详情,全选和批量删除

Posted 魅影星魂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AJAX实现弹窗显示详情,全选和批量删除相关的知识,希望对你有一定的参考价值。

以Nation表为例,将Nation表显示在页面上,每一行数据前面加上复选框,后面加上查看详情,点击以弹窗形式显示每一行的数据,并且在表格最后一行加上全选复选框,点击选中全部数据,后面跟一个批量删除按钮,点击删除选中项,如图:

主页面:需要用到弹窗插件,将js与css文件加载过来

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="../jquery-1.11.2.min.js"></script>
<script src="../tanchuang/tanchuang.js"></script>

<style type="text/css">
.xq{ width:80px; height:30px; background-color:#06C; line-height:30px; color:#FFF;}
.xq:hover{ cursor:pointer; background-color:#F60; color:#FFF;}
</style>
<link href="../tanchuang/tanchuang.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Nation表</h1>
<table id="biao" width="800px" border="1" cellpadding="0" cellspacing="0">

</table>

</body>
</html>
<script type="text/javascript">
$(document).ready(function(e) {
    
    Show();
    function Show()   //将各个事件放到一个方法里,这样调用这一个方法就可以加上各个事件了
    {        
        $.ajax({
            async:false,
            //url:"testchuli.php",
            url:"ChuLi1.php",
            data:{type:0},     //将三个处理页面放入一个页面,需要传一个参数type
            type:"POST",
            dataType:"JSON",
            success: function(data){
                var str= "<tr height=\'30px\'><td>民族代号</td><td>民族名称</td><td>查看详情</td></tr>";
                for(var k in data)
                {
                    str+="<tr><td><input type=\'checkbox\' value=\'"+data[k][0]+"\' class=\'ck\' />"+data[k][0]+"</td><td>"+data[k][1]+"</td><td><div class=\'xq\' bs=\'"+data[k][0]+"\'>查看详情</div></td></tr>";    
                }
                str+="<tr height=\'30px\'><td colspan=\'3\'><input type=\'checkbox\' id=\'qx\' /> 全选 <input type=\'button\' id=\'btn\' value=\'批量删除\' /></td></tr>";
                $("#biao").html(str);
                }              
            });    
    
    //查看详情
    $(".xq").click(function(){
        //取主键值
        var code = $(this).attr("bs");
        $.ajax({
            //url:"xqchuli.php",
            url:"ChuLi1.php",
            data:{code:code,type:1},
            type:"POST",
            dataType:"TEXT",
            success: function(data){
                
                var lie =data.split("^");
                var html = "<div>民族代号:"+lie[0]+"</div><div>民族名称:"+lie[1]+"</div>";
                
                var win = new Window({
                
                width : 400, //宽度
                height : 500, //高度
                title : \'详细信息\', //标题
                content : html, //内容
                isMask : true, //是否遮罩
                buttons : "", //按钮
                isDrag:true,  //是否移动                
                });                
                }            
            });
        })
        
    //全选
    $("#qx").click(function(){
        //全选按钮选中状态,索引0取document对象
        var xz = $(this)[0].checked;
        //操作所有复选框的选中状态
        var ck =$(".ck");        
        ck.prop("checked",xz);        
        })
        
    //批量删除
    $("#btn").click(function(){
        //找选中的主键值,用循环遍历选中的主键值
        var ck =$(".ck");
        var str ="";
        for(var i=0;i<ck.length;i++)
        {
            if(ck.eq(i).prop("checked"))
            {
                str+=ck.eq(i).val()+"\',\'";    
            }    
        }
        str= str.substr(0,str.length-3);  //分隔符占3个字符,截取字符串,去掉最后的"\',\'",这样正好匹配SQL语句
        
        $.ajax({
            //url:"Delete.php",
            url:"ChuLi1.php",
            data:{str:str,type:2},
            type:"POST",
            dataType:"TEXT",
            success: function(data){
                alert(data);
                
                Show();                
                }            
            });        
        })
} });
</script>

将显示数据,查看详情与批量删除三个处理页面合成一个页面,只需传一个参数type:

<?php
include("../DB.class.php");
$db = new DB();
$type = $_POST["type"];
//用switch case比if else清晰
switch($type)
{
    case 0:
        $sql  ="select * from Nation";
        echo $db->JsonQuery($sql);
        break;
    case 1:
        $code = $_POST["code"];
        $sql = "select * from Nation where Code = \'{$code}\'";
        echo $db->StrQuery($sql);
        break;
    case 2:
        if(!empty($_POST["str"]))
        {
            $str = $_POST["str"];
            $sql = "delete from Nation where Code in (\'{$str}\')";    
            //echo $sql; 输出SQL语句看是否正确
            if($db->Query($sql,1))
            {
                echo "删除成功!";    
            }
            else
            {
                echo "删除失败!";
            }
        }
        else 
        {
            echo "请选择要删除的项!";    
        }
        break;
    default:
        echo "";        
}

 

 

以上是关于AJAX实现弹窗显示详情,全选和批量删除的主要内容,如果未能解决你的问题,请参考以下文章

ajax“显示弹窗详情”和“删除”功能练习

jQuery实现全选/反选和批量删除

作业:汽车查询--弹窗显示详情,批量删除 php做法

Ajax-SSM第四课 车型管理系统-全选反选批量删除功能

Ajax-SSM第四课 车型管理系统-全选反选批量删除功能

多选框的全选和全不选(复制)