DataTables ajax重新加载数据

时间:2023-03-08 15:36:22

传数据给后台返回数据,最开始的办法是

重新生成一个datatable对象,但是在每次点击刷新时都会有闪动的现象,而且代价很高。理想中应该仅仅更新数据。

最后在文档中查到一个插件fnReloadAjax加入文件

$.fn.dataTableExt.oApi.fnReloadAjax = function ( oSettings, sNewSource, fnCallback, bStandingRedraw )

{

if ( sNewSource !== undefined && s NewSource !== 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 );

};

使用方法

oTable.fnReloadAjax('pages/getPlayerNewData.php);

oTable.fnReloadAjax(); //使用默认

http://yuklog.lofter.com/post/70cbd_8b6706

相关文章