我又来这里寻求帮助。我在页面视图中有一个分页页面结果。当我使用复选框在结果列表中选择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
}
答案 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 id
或data-
属性(即。<td data-id='1'>
)。
然后通过AJAX请求将其作为字符串化的json或数组传递给路径,然后在控制器上处理删除。
此外,最好使用post
而非get
替换路线。
注意:我没有对这些线路进行过测试,但我很确定你会知道从哪里开始。