前言:
之前在写Web作业的时候遇到了这么一个问题,就是如何实现多行删除,因为涉及的后台系统,这一个是非常关键的,但没很好的解决的异步和同步的问题,因此每次多行删除就像一个‘’梗“一样,怎么也迈不过去,记录下来。
前端部分:
我们编写一个 链接去跳转
<a onclick="del_more()" class="btn btn-danger radius"><i class="Hui-iconfont"></i> 批量删除</a>
在JS 里通过调用del_more()
/*多行删除*/
function del_more()
{
var ids=$(':checkbox');
var str='';
var count=0;
for(var i=0;i<ids.length;i++){
if(ids.eq(i).is(':checked')){
str+=','+ids.eq(i).val();
count++;
}
}
var str=str.substr(1);
//substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。 处理我们第一个为,
layer.confirm(
'你确定要删除这'+count+'条数据吗?'+str,
{btn : [ '确定', '取消' ]},
function(){
{
$.ajax({
type:'get',
url:'../../php/admin/users_del.php',
data:{str:str},
success:function(msg)
{
for(var i=ids.length-1;i>=0;i--)
{
if(ids.eq(i).is(':checked'))
{
ids.eq(i).parent().parent().remove();
}
}
}
})
layer.msg('成功删除共'+count+'条数据', {
time: 5000, //5s后自动关闭
btn: ['明白了', '哦']
});
}}
);
return false;
}
其实这里存在一个JS与PHP交互的知识,
首先我们要区分好同步和异步的问题,因为在这个地方我们要去访问一个新的页面
如果我们采用同步,那么直接在新的页面上进行相应跳转即可;
Notes:
但如果我们用AJAX做异步处理的时候,Ajax访问新的页面后依然在等待新的页面传递消息给旧的页面,也只能在旧的页面做重定向
js 重新定向:
window.location.href="url";
这里的删除我们是异步进行操作,异步操作
$.ajax({
type:'get',
url:'../../php/admin/users_del.php',
data:{str:str},
success:function(msg)
{
for(var i=ids.length-1;i>=0;i--)
{
if(ids.eq(i).is(':checked'))
{
ids.eq(i).parent().parent().remove();
}
}
}
})
扫描二维码关注公众号,回复:
5181472 查看本文章
后端部分:
这时候我们对请求进行处理,用PHP编写
<?php
/**
* @Author: LYD
* @Date: 2018-11-17 12:52:11
* @Last Modified by: LYD
* @Last Modified time: 2018-11-26 18:58:32
*/
// 初始化一些数据
require '../../config/config.php';//加载配置文件
if ($_SERVER['REQUEST_METHOD'] == 'GET'){
list($result,$affectTotal)=sign_del($dbc);
$_SESSION["msg"] = ($result)? "删除了".$affectTotal."记录成功!" : "抱歉,删除失败";
//redirect_to('admin/users_show.php');
exit;
}
?>
最后项目演示效果如下