使用Laravel 5.4中的Javascript从数据库中删除选定的复选框?

时间:2017-05-15 03:36:39

标签: javascript laravel checkbox

我又来这里寻求帮助。我在页面视图中有一个分页页面结果。当我使用复选框在结果列表中选择2行或更多行时,我想使用放在分页之外的按钮从列表和数据库中删除它们。我找到了一个可以从列表中删除它们的JS脚本,但它无法将其删除。我可以想象我想要发生什么,但我不熟悉JS脚本,我enter code here不知道如何在里面包含一个脚本,可以删除所选(ids)数据行的数组并将其从DB。请有人评估我的代码,并教我在哪里以及如何做到这一点。我真的很喜欢这里。除非我能解决我的大问题,否则无法继续。

这是JS脚本......它运作良好

    <script>
  function delBoxes(){
    var e = document.getElementsByName("chkrow");
    var message  = 'Are you sure you want to delete?';
    var row_list = {length: 0};

    for (var i = 0; i < e.length; i++) {
        var c_box = e[i];

        if (c_box.checked == true) {
            row_list.length++;

            row_list[i] = {};
            row_list[i].row = c_box.parentNode.parentNode;
            row_list[i].tb  = row_list[i].row.parentNode;
        }
    }

    if (row_list.length > 0 && window.confirm(message)) {
        for (i in row_list) {
            if (i == 'length') {
                continue;
            }
            var r = row_list[i];
            r.tb.removeChild(r.row);
        }
    } else if (row_list.length == 0) {
        alert('Please select row to delete.');
    }
}
</script>

这是Href(类似按钮)

                                  <span>
                              <a href="#" class="btn btn-default" onclick = "delBoxes();" style="border-radius: 0px;">Delete Selected</a></span>


Here's my Route: Route:: get('/postDelete_inv_selected','InvController@postDelete_inv_selected');


And my Controller (Unfixed until I can get the array of selected rows)

    public function postDelete_inv_selected(Request $request)

    {
           ///delete code here/ redirect back to pagination result
    }

1 个答案:

答案 0 :(得分:0)

更新下面的代码:

我不确定我是否正确理解了您的代码,因为您没有包含代码的HTML,但是它的外观,应该删除您已经提到的HTML上的rows

对于数据库部分,我建议您在代码的循环部分收集要删除的项目的id,使它看起来像这样:

// array declaration    
var id_to_delete = [];

for (var i = 0; i < e.length; i++) {
    var c_box = e[i];
    if (c_box.checked == true) {
        row_list.length++;
        row_list[i] = {};
        row_list[i].row = c_box.parentNode.parentNode;
        row_list[i].tb  = row_list[i].row.parentNode;

        // collect the id of the rows to delete
        id_to_delete.push(c_box.value);
    }
}

// send a request to server
var xhttp = new XMLHttpRequest();
xhttp.open("POST", "/postDelete_inv_selected", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send( "id_to_delete=" + JSON.stringify(id_to_delete) );

可能带有html iddata-属性(即。<td data-id='1'>)。

然后通过AJAX请求将其作为字符串化的json或数组传递给路径,然后在控制器上处理删除。

此外,最好使用post而非get替换路线。

注意:我没有对这些线路进行过测试,但我很确定你会知道从哪里开始。