使用插件fnReloadAjax
使用情况, 当你页面一打开就加载该datatables渲染,若是页面有操作动作,页面一刷新,默认的数据会再渲染一次,把动作的操作给覆盖,
这样就可以用这个插件,避免这种情况
$.fn.dataTableExt.oApi.fnReloadAjax = function ( oSettings,sNewSource,fnCallback,bStandingRedraw )
{
// DataTables 1.10 compatibility - if 1.10 then versionCheck exists.
// 1.10s API has ajax reloading built in,so we use those abilities
// directly.
if ( $.fn.dataTable.versionCheck ) {
var api = new $.fn.dataTable.Api( oSettings );
if ( sNewSource ) {
api.ajax.url( sNewSource ).load( fnCallback,!bStandingRedraw );
}
else {
api.ajax.reload( fnCallback,!bStandingRedraw );
}
return;
}
if ( sNewSource !== undefined && sNewSource !== null ) {
oSettings.sAjaxSource = sNewSource;
}
// Server-side processing should just call fnDraw
if ( oSettings.oFeatures.bServerSide ) {
this.fnDraw();
return;
}
this.oApi._fnProcessingdisplay( oSettings,true );
var that = this;
var iStart = oSettings._idisplayStart;
var aData = [];
this.oApi._fnServerParams( oSettings,aData );
oSettings.fnServerData.call( oSettings.oInstance,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 ( bStandingRedraw === true )
{
oSettings._idisplayStart = iStart;
that.oApi._fncalculateEnd( oSettings );
that.fnDraw( false );
}
that.oApi._fnProcessingdisplay( oSettings,false );
/* Callback user function - for event handlers etc */
if ( typeof fnCallback == 'function' && fnCallback !== null )
{
fnCallback( oSettings );
}
},oSettings );
};
usage:
// Example call to load a new file oTable.fnReloadAjax( 'media/examples_support/json_source2.txt' ); // Example call to reload from original file oTable.fnReloadAjax();http://datatables.net/plug-ins/api