我确实有一个在页面上运行的代码。页面包含 3 个选项卡,每个选项卡包含一个表格和 2 个日期输入字段以及发送请求的按钮。JS 看起来像这样。
$(document).ready(function(){
var tbl1 = $("tbl1").dataTable(){ //a lots of parametres}
.. //2 more tbl2 and tbl3 variable initialization
$("btn1").click(function(){
tbl1.fnReloadAjax(tbl.oSettings());
});
..//2 more btn2 and btn3 action initialization
})
首次加载页面时,日期输入字段跨度为 10 天,表格包含最近 10 天的记录。现在我做了一些更改,我确实有一个新的 ajax 请求,它从服务器中删除记录,我需要更新表格内容。每行都有一个按钮,按下它会删除服务器上的这条记录。一切正常,但要查看更改需要重新加载整页。我试图这样做:
function removeData(source){
$.post('delete_record',{}, function ...)// ajax request to remove data
alert("deleted"); // notice to user that record was deleted
tbl1.fnReloadAjax(tbl1.oSettings()); // ERROR no ref to tbl1(trying to update table content)
}
错误是因为在 removeData 函数中引用 tbl1 对象不存在,因为 tbl1 是在 $(document).ready 函数中定义的。我怎样才能获得到 tbl1 的链接
我现在已经尝试从函数 ready() 中取出表初始化代码。就像是
var getoTabele = function(){
var oTable = $("tbl1").dataTable..... //initialization code
...
...
return oTable;
}
现在我可以在 removeData 函数中使用 oTable 因为我可以在 removeData 函数中获取链接
var oTable = getoTable() // Data warning. Cannot reinitialise DataTable
这是正确的,因为函数 getoTable 创建新的 oTable 不参考旧的