使用插件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