数据库交互技术 ajax无刷新删除、无刷新排序、无刷新分页

最近学习laravel 5.4框架,遇到ajax交互技术的内容整理总结一下:

模板文件部分html代码:

<div class="panel panel-default">
	<div class="panel-heading">
		<button class="btn btn-danger" onclick="delAll()"><span class="glyphicon glyphicon-trash"></span> 批量删除</button>
		<a href="{{ asset('admin/pic/create') }}" class="btn btn-success"><span class="glyphicon glyphicon-plus"></span> 添加图片</a>
					
		<p class="pull-right tots" >共有 <span id="tot">{{count($data)}}</span> 条数据</p>
		<form action="" class="form-inline pull-right">
			<div class="form-group">
				<input type="text" name="" class="form-control" placeholder="请输入你要搜索的内容" id="">
			</div>
			<input type="submit" value="搜索" class="btn btn-success">
		</form>

	</div>
		<table class="table-bordered table table-hover" id="table">
			<tr>
			<th><input type="checkbox"  name=""   id="allsel"></th>
			<th>ID</th>
			<th>TITLE</th>
			<th>SORT</th>
			<th>IMG</th>
			<th>操作</th>
			</tr>
			@foreach($data as $value)
			<tr id="tr{{$value->id}}">
				<td><input type="checkbox" value="{{$value->id}}" name="" class="inputs"></td>
				<td>{{$value->id}}</td>
				<td>{{$value->title}}</td>
				<td><input type="text" onchange="change(this,{{$value->id}})" value="{{$value->sort}}" name ="" id=""></td>
				<td><img width="200px" src="/Uploads/Goods/{{$value->img}}" alt=""></td>
		
				<td><a href="/admin/pic/{{$value->id}}/edit" class="glyphicon glyphicon-pencil"></a>&nbsp;&nbsp;&nbsp;<a href="javascript:;" onclick="del(this,{{$value->id}})" class="glyphicon glyphicon-trash"></a></td>
			</tr>
			@endforeach

		</table>
	<!-- 分页效果 -->
	<div class="panel-footer">
		<nav style="text-align:center;">
			<ul class="pagination">
				@for($i=1;$i<=$page;$i++)
					<li><a href="javascript:;" onclick="page(this,{{$i}})">{{$i}}</a></li>
				@endfor				
			</ul>
		</nav>

	</div>
</div>

js部分代码:

<script>
	//无刷新的分页
	function page(obj,page){
		//alert(page);
		//发送ajax请求

		$.get('/admin/pic',{'page':page},function(data){
			//处理数据
			//alert(data);

			//写入到表格中
			$('#table').html(data);

		});

	}


	//全选、反选
	$(document).on('click','#allsel',function(){
		if($(this).is(":checked")){
			$('.inputs').prop('checked',true);
		}else{
			$('.inputs').prop('checked',false);
		}
	})


//obj,id 接受参数
function del(obj,id){
		
	//$.post(请求地址,传递参数,响应请求)
	//data可以随便命名 主要接收ajax返回的数据
	var r=confirm("您确定要删除?")
    if (r==true){
		$.post('/admin/pic/'+id,{'id':id,'_method':'delete','_token':'{{csrf_token()}}'},
			function(data){
				//判断接收的数据如果1成功  0失败
				
				if(data){
					//移除对应删除的数据
					$(obj).parent().parent().remove();
					//获取总数据条数
					var tot=Number($("#tot").html());
					//修改总数据条数
					$("#tot").html(--tot);
					
				}else{
					alert('删除失败');
				}
			}
		);
	} else{
		  return;
	};	 
}

	
//批量删除方法
function delAll(){
	//alert($(".inputs:checked").length);
	//alert('123');
	//获取被选中的数据的值
	var arr=[];
		
	//获取所有的数据 并且是被选中的
	inputs = $(".inputs:checked");//列表前边小复选框
	//获取选中数据的value值
	for(var i=inputs.length-1; i>=0; i--){
		//把值压入到数组
		arr.push(inputs.eq(i).val());
	}
	//alert(arr);
	//把arr转换成字符串
	str =arr.join(",");//把数组中的所有元素放入一个字符串

	var r=confirm("您确定要删除?")
	if (r==true){
		//发送ajax请求
		$.post("{{asset('admin/pic/delAll')}}",{'str':str,'_token':'{{csrf_token()}}'},function(data){
			//判断数据
			if(data == arr.length){
				
				//移除对应的数据
				for(var i=inputs.length-1; i>=0; i--){
					$("#tr"+arr[i]).remove();
				};
				
				//修改数据个数
				tot=Number($("#tot").html())-Number(data);
				$("#tot").html(tot);
				
				
			}else{
				alert('删除失败');
			}
			
		});
	} else{
		  return;
	};
}
	
	//无刷新排序
	function change(obj,id){
		
		//获取用户修改的值
		var val = $(obj).val();
		$.post('/admin/pic/sort',{'id':id,'val':val,'_token':'{{csrf_token()}}'},function(data){
			//判断是否修改成功
			if(data == 1){
				//页面自动刷新
				window.location.reload();
			}else{
				alert('修改失败');
			}
			
		});
		
	}
	
</script>

laravel控制器文件:

    //后台首页方法  GET
    public function index()
    {
		//计算数据的总条数
		$tot=DB::table('pic')->count();
		//每页展示几条数据
		$length=3;
		
		//计算总页数
		$page=ceil($tot/$length);
	
		//判断地址栏参数是否存在
		
		if(isset($_GET['page'])){
			//计算分页
			$offset=($_GET['page']-1)*$length;
			//进行数据库查询
			$data = DB::select("select * from pic order by sort asc limit $offset,$length");
			//返回json
			//return $data;

            //返回页面
            return view('admin.pic.page')->with('data',$data);

		}
	
		
		//从数据库中读取相关数据
		$data = DB::select("select * from pic order by sort asc limit 0,$length");
		//var_dump($data);



		//加载图片管理界面

		return view('admin.pic.index')->with('data',$data)->with('page',$page);
    }

    //删除图片操作  DELETE
	public function destroy(Request $request){
		
		//获取删除id
		$id=$request->input('id');
		
		//查询图片
		$data=DB::select("select * from pic where id=?",[$id]);
		//echo $data[0]->img;
		//exit;
		
		 //删除操作 1成功  0失败
		 if(DB::delete('delete from pic where id=?',[$id])){
			//删除成功,删除图片
			if(!empty($data[0]->img)){
				unlink("./Uploads/Goods/".$data[0]->img);
			}
			 
			 return '1';
		 }else{
			 return '0';
		 }
	}
	
	//删除所有的方法
	public function delAll(Request $request){
		$str = $request->input('str');
		
		$data = DB::select("select * from pic where id in ($str)");
		//var_dump($data);exit();
		//echo $str;
		if($a = DB::delete("delete from pic where id in ($str)")){
			//循环删除图片
			foreach ($data as $value){
				if(!empty($value->img)){
					unlink("./Uploads/Goods/".$value->img);
				}
			}
			
			return $a;
		}else{
			return 0;
		}	
	}
	
	//ajax 修改数据
	public function sort(Request $request){
		
		if(DB::update("update pic set sort=? where id=?",[$request->input('val'),$request->input('id')])){
			return 1;
		}else{
			return 0;
		}
	}

ajax分页返回的page.blade.php页面:

<tr>
    <th><input type="checkbox"  name=""   id="allsel"></th>
    <th>ID</th>
    <th>TITLE</th>
    <th>SORT</th>
    <th>IMG</th>
    <th>操作</th>
</tr>
@foreach($data as $value)
    <tr id="tr{{$value->id}}">
        <td><input type="checkbox" value="{{$value->id}}" name="" class="inputs"></td>
        <td>{{$value->id}}</td>
        <td>{{$value->title}}</td>
        <td><input type="text" onchange="change(this,{{$value->id}})" value="{{$value->sort}}" name ="" id=""></td>
        <td><img width="200px" src="/Uploads/Goods/{{$value->img}}" alt=""></td>

        <td><a href="/admin/pic/{{$value->id}}/edit" class="glyphicon glyphicon-pencil"></a>&nbsp;&nbsp;&nbsp;<a href="javascript:;" onclick="del(this,{{$value->id}})" class="glyphicon glyphicon-trash"></a></td>
    </tr>
@endforeach

路由注意配置一下~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值