JQuery数据表-AJAX重新加载不起作用
我使用DataTables来显示一些数据。当添加新记录(通过AJAX)时,我试图在成功时重新加载表。每当我尝试调用oTable.fnDraw()或oTable.fnReloadAjax()时,就会出现错误“oTable未定义”。我做错了什么 我尝试了fnDraw()和fnReloadAjax(),但都返回了相同的错误JQuery数据表-AJAX重新加载不起作用,jquery,ajax,datatables,reload,Jquery,Ajax,Datatables,Reload,我使用DataTables来显示一些数据。当添加新记录(通过AJAX)时,我试图在成功时重新加载表。每当我尝试调用oTable.fnDraw()或oTable.fnReloadAjax()时,就会出现错误“oTable未定义”。我做错了什么 我尝试了fnDraw()和fnReloadAjax(),但都返回了相同的错误 $(document).ready(function(){ var oTable = $('.admin_users').dataTable({ "bPro
$(document).ready(function(){
var oTable = $('.admin_users').dataTable({
"bProcessing": true,
"sAjaxSource": 'sql/admin_users.php',
"aaSorting": [[ 0, "asc" ]],
"bJQueryUI": true,
"sPaginationType": "full_numbers",
// "sAjaxSource": 'SQL/dataTable.php',
"bStateSave": true, //Use a cookie to save current display of items
"aoColumns": [
null,
null,
null,
null,
{ "sType": "date", "sClass":"center" }
],
"bScrollCollapse": true,
"sScrollX": "100%"
});
oTable.fnAdjustColumnSizing();
手动重新绘制按钮:
$('#click_me').click( function () {
oTable.fnDraw();
//oTables.fnReloadAjax();
});
oTable
是对datatable的局部变量引用,在document ready函数之外无效
改为这样做:
$('#click_me').click( function () {
$('.admin_users').dataTable().fnReloadAjax();
} );
范围问题总是棘手的。我并不是说自己是专家,但这种方式对我来说似乎一直有效:
var myApp = myApp || {}; // create it if the variable isn't already being used
myApp.oTable = $('#admin_users').dataTable({ parameters });
myApp.someUtilityFunction = function(foo) { alert(foo) };
另外,您可以看到,在上面的示例中,我正在为我的dataTable使用一个ID。选择器是一个选择器,因此您的选择器可以工作,但它始终是一个唯一的表,因此ID选择器更有效。我也不能100%确定dataTable()是否只在选择器返回的第一个节点上运行(我希望如此!),这是一个潜在的问题
有了它,您就可以毫无恐惧地将您在文档中的点击绑定好:
$(function() {
$('#click_me').click( function () {
myApp.oTable.fnReloadAjax(); // if script is available
});
});
另外,如果#click_me曾经有被破坏的危险(例如,在正在重新绘制的表中!),最好使用.delegate()(jQuery 1.6.x)或.on()(1.7及更高版本)
oTable是对datatable的局部变量引用,在document ready函数之外无效
是的,你可以
var oTable;
$(document).ready(function() {
oTable = $('.admin_users').dataTable({
});
});
$('[name=insert]').live('click', function(){
$DT.RowInsert(this);
oTable.fnReloadAjax();
return false;
});
`
这个代码适合我
$(document).ready(function(){
var oTable = $('#MyTab').dataTable({....});
$('#btnRefresh').click( function () {
oTable.fnDraw();
} );
}`
若您只想重新加载数据以获得最新记录,只需调用键列上的click事件
- $("#tableToCallEvent").find('.sorting').eq(0).click();
您可以更改等式(0)的值,其中0是表中tbody第一列的索引
简单易用:)您可以使用ajax重新加载数据表。重新加载datatable的方法,请尝试这些方法
$('#click_me').click( function () {
oTable.ajax.reload();
});
出现以下错误:DataTables警告:无法重新初始化DataTable。若要检索此表的DataTables对象,请不向dataTable()函数传递任何参数,或将BRETRIVE设置为true。或者,要销毁旧表并创建新表,请将bDestroy设置为true(请注意,可以通过API对配置进行许多更改,这通常要快得多)。是否确实没有在click()函数中的dataTable()调用中传递任何参数?这似乎是错误信息的要点。在任何情况下,我使用相同的技术都没有问题-我对表的初始化有些不同(分页、处理和状态保存都是false),但是。是的,我完全复制了您的代码。尝试将其放置在$(document).ready块中以及该块之外。不走运。好吧,您可以尝试按照消息的建议指定{bRetrieve:True}。另外,我假设您已经将脚本与fnReloadAjax链接在一起了。它不是dataTables基本实现的一部分。