由于设置stateSave参数为true,dataTables每次分页信息从web store中获取,导致表格展现出错误的页码(上一次请求页码)。
解决办法:stateSave:false。
代码分析:
if ( oInit.bStateSave )
{
features.bStateSave = true;
_fnLoadState( oSettings, oInit );
_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );
}
--------------------------------------------------------------------------------------------------------------------------------
_fnLoadState()函数分析:
//从缓存中取上次页码信息(state),
var state = settings.fnStateLoadCallback.call( settings.oInstance, settings );
if ( ! state || ! state.time ) {
return;
}
//state与ajaxData封装成新setttings,setting中包含:dataTables所有参数数据、ajaxData数据、当前分页信息等。
// Restore key features - todo - for 1.11 this needs to be done by
// subscribed events
settings._iDisplayStart = state.start;
settings.iInitDisplayStart = state.start;
settings._iDisplayLength = state.length;
settings.aaSorting = [];
_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, state] );
--------------------------------------------------------------------------------------------------
_fnSaveState(stttings)函数分析
// bStateSave=true,取出缓存state.否则直接返回
if ( !settings.oFeatures.bStateSave || settings.bDestroying )
{
return;
}
/* Store the interesting variables */
var state = {
time: +new Date(),
start: settings._iDisplayStart,
length: settings._iDisplayLength,
order: $.extend( true, [], settings.aaSorting ),
search: _fnSearchToCamel( settings.oPreviousSearch ),
columns: $.map( settings.aoColumns, function ( col, i ) {
return {
visible: col.bVisible,
search: _fnSearchToCamel( settings.aoPreSearchCols[i] )
};
} )
};