美文网首页
laravel后台处理ajax的数组内容

laravel后台处理ajax的数组内容

作者: 若飞丶 | 来源:发表于2017-03-24 20:42 被阅读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'=>'删除成功'];
    }
    

    对我自己来说的难点:

    • jq如何将选项框的id值存到一个数组里
    • 后台如果读取ajax传入的数组,并执行

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

    反思

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

    相关文章

      网友评论

          本文标题:laravel后台处理ajax的数组内容

          本文链接:https://www.haomeiwen.com/subject/eeqqottx.html