我正在使用DataTables(jQuery 插件)来显示我的表格数据。如果使用 AJAX 从 JSON Web 服务获取数据。
如何使用 JavaScript/jQuery 强制刷新?我正在查看 API,但找不到正确的功能。
我正在使用DataTables(jQuery 插件)来显示我的表格数据。如果使用 AJAX 从 JSON Web 服务获取数据。
如何使用 JavaScript/jQuery 强制刷新?我正在查看 API,但找不到正确的功能。
在等待答案的过程中,我终于找到了:fnDraw
功能正是我所需要的。
它在 API 部分的开头进行了描述,但我只是懒得通读:
您必须对服务器进行必要的调用以根据需要处理您的数据,然后只需重新绘制表格 (
fnDraw
)即可查看新数据。
尝试调用:
$("#Table1").fnDestroy().dataTable();
那应该重建它...
在某处添加:
$.fn.dataTableExt.oApi.fnReloadAjax = function ( oSettings, sNewSource, fnCallback, bStandingRedraw ) {
if ( typeof sNewSource != 'undefined' && sNewSource != null )
{
oSettings.sAjaxSource = sNewSource;
}
this.oApi._fnProcessingDisplay( oSettings, true );
var that = this;
var iStart = oSettings._iDisplayStart;
var aData = [];
this.oApi._fnServerParams( oSettings, aData );
oSettings.fnServerData( oSettings.sAjaxSource, aData, function(json) {
/* Clear the old information from the table */
that.oApi._fnClearTable( oSettings );
/* Got the data - add it to the table */
var aData = (oSettings.sAjaxDataProp !== "") ?
that.oApi._fnGetObjectDataFn( oSettings.sAjaxDataProp )( json ) : json;
for ( var i=0 ; i<aData.length ; i++ )
{
that.oApi._fnAddData( oSettings, aData[i] );
}
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
that.fnDraw();
if ( typeof bStandingRedraw != 'undefined' && bStandingRedraw === true )
{
oSettings._iDisplayStart = iStart;
that.fnDraw( false );
}
that.oApi._fnProcessingDisplay( oSettings, false );
/* Callback user function - for event handlers etc */
if ( typeof fnCallback == 'function' && fnCallback != null )
{
fnCallback( oSettings );
}
}, oSettings );
}
然后像这样调用它:
oTable = $(".dt").dataTable();
oTable.fnReloadAjax();