【发布时间】:2016-06-08 03:26:46
【问题描述】:
在我的 Laravel 应用程序中,我有多个页面,其中有数据表。他们都有“mydttable”类。我使用 Ajax 将数据加载到 DataTables 中。
在每个表的每一行上,我都有一个带有删除按钮的列。每当我按下 is 时,我都会在相应的行 then I want to reload the data into the datatable 上执行删除操作。我可以通过使用 if 语句询问哪个表格上有按钮来做到这一点,但我想知道是否有更简单的方法来重新加载。
更确切地说...
是我的 custom.js,我按如下方式填充数据表:
var uzTable = $('#users').DataTable( {
"processing": true,
"serverSide": true,
"sAjaxSource": "sspXController?draw=1",
...
});
var cliTable = $('#clients').DataTable( {
"processing": true,
"serverSide": true,
"sAjaxSource": "sspXController2?draw=1",
...
});
var marTable = $('#market').DataTable( {
"processing": true,
"serverSide": true,
"sAjaxSource": "sspXController3?draw=1",
...
});
现在,删除点击事件,我在其中进行删除并希望进行重新加载
$( document ).on('click', '.ssDelete', function(e){
e.preventDefault();
$.ajax({
url: someFormAction,
type: 'POST',
dataType: 'html',
success:function(data) {
$(".mydttable").ajax.reload();
}
});
我的 HTML 是这样的:
<table id="users" class="row-border hover order-column table mydttable dataTable no-footer" cellspacing="0" width="100%">
<thead>
<tr role="row">
<th class="small-sorting" style="width:84px"></th>
<th class="small-sorting" style="width:84px">Operatiuni</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
</tr>
</tbody>
</table>
当然,上面的HTML只是第一个DataTable(“users”)的HTML代码,其他表也有HTML代码,但我不会在这里粘贴,以免这个问题过长。 同样在任何给定时间,视图 (html) 中都会显示只有一个数据表
因此,当我单击任何具有 ssDelete ID 的按钮时,我会删除当前显示的 dataTable 的当前记录,并且我想刷新包含删除按钮的 dataTable。而且由于我没有单独为每个表执行删除功能,因此我还希望能够为 ajax 重新加载做一些更短的事情。
所以,我的目标是能够在单击“#ssDelete”按钮时重新加载文档中加载的任何 DataTable,而无需额外的分配和条件...... 而且我的尝试不起作用:
success:function(data) {
$(".mydttable").ajax.reload(); // NOT WORKING
...
我该怎么做? 编辑 人们似乎没有阅读我的整个问题,所以我将在这里重复它的本质: 我只需要一个函数来从多个数据表中删除记录。为了做到这一点(删除部分已经完成并且已经工作)我需要能够刷新/重新加载可见数据表的内容。我需要这样做,而不必测试什么表是可见的。 基于我所有的数据表共享同一个类的事实,我应该能够调用通用数据表并将 ajax.reload() 函数应用于它。但它不起作用。我需要一种方法来访问当前 VIEW 中的任何数据表,使用一些通用的方式......比如:
$(".mydttable").ajax.reload();
或
$('.mydttable').dataTable().fnReloadAjax();
或
$('.mydttable').DataTable().ajax.reload();
显然,如果我这样做,jQuery 会尝试在常规 Table 元素上执行函数,而不是在 Table 的 dataTable 转换上执行。 如果我尝试将 DataTable() 应用于上面的元素,我会得到:
未捕获的类型错误:无法读取未定义的属性“重新加载”
到目前为止,这是我的 ajax 调用(也不起作用):
var idtable = $('.mydttable').attr('id');
$.ajax({
url: myFormAction,
type: 'POST',
cache: false,
data : { _token: csrf_token, _method:'DELETE' },
dataType: 'html',
success:function(data) {
$('#DeleteModalDialog').modal('hide');
if(idtable=='users'){
alert('uzerii');
uzTable.ajax.reload();
}else if(idtable=='clients'){
alert('Clients');
cliTable.ajax.reload();
}else if(idtable=='market'){
alert('Market');
marTable.ajax.reload();
}
}
});
所以即使我收到警报,重新加载也不会发生,所以它知道可见表的 ID 是什么。 (uzTable、cliTable 和 marTable 是 jquery vars,如上所示)
我的代码有什么问题...?我该如何解决?
【问题讨论】: