laravel后台处理ajax的数组内容

2017-03-24  本文已影响0人  若飞丶

这段时间在写公司的应用,遇到这个问题,特此记录保留。

应用功能:批量删除数据

ajax像后台传输数组

html结构

<a href="#" onclick="delete_this('',true)" data-action="trash">
    批量删除
</a>

@if($data != null)
    @foreach($data as $item)

    <div class="image-checkbox">
    
        //选择框,并给value对应该数据的id,用于批量选择的
        <input type="checkbox" class="cbr" value="{{$item->id}}" />
        
        //数据名称
        <div class="image-checkbox">
             {{$item->name}}                        
        </div>
    </div>
    
   @endforeach
@endif 

javascript

//获取页面中的选择框
var box = $('.cbr');

//创建一个空的数组
var arr = new Array();

for(var i=0; i < box.length; i++){

    //for循环出选择框对应的id数组
    if(box[i].checked)
    {
        arr.push(box[i].value);
    }
}
$.ajax({
    type : 'POST',
    url : '/delete',
    data : {
    
        //将数组命名id,方便后台读取
        id : arr
    },
    success : function(data){
        console.log(data.msg);
    }
});

后台

public function delete_list_many()
{
    //$_POST方法是php原生方法,用户获取传入的post值,我们前台用的是ajax post的方法传入的,如果是表单,可直接用laravel的Input::all()接收post和get的数据,这里的'id'就是ajax里data的id。
    
    $data = $_POST['id'];
    
    foreach ($data as $item)
    {
    
        //foreach执行即可
        
        $id = $item;
        Live::where('id',$id)->delete();
    }
    return ['msg'=>'删除成功'];
}

对我自己来说的难点:

由于自己基础不牢固,对于以上两点百度了很久才弄明白。

反思

后台删除数据是使用foreach执行的,所有每个id的数据都会执行一边delete,数据很多的话,效率很一般。
所以我觉得是有更有效率的方法解决这个问题的,例如直接执行sql语句,把要删除的id卸载语句里什么的,由于这个应用基本批量删除的功能不常用,所以以后遇到了再去深究吧。

上一篇下一篇

猜你喜欢

热点阅读