function _fnAjaxParameters( settings )
		{
			var
				columns = settings.aoColumns,
				columnCount = columns.length,
				features = settings.oFeatures,
				preSearch = settings.oPreviousSearch,
				preColSearch = settings.aoPreSearchCols,
				i, data = [], dataProp, column, columnSearch,
				sort = _fnSortFlatten( settings ),
				displayStart = settings._iDisplayStart,
				displayLength = features.bPaginate !== false ?
					settings._iDisplayLength :
					-1;
		
			var param = function ( name, value ) {
				data.push( { 'name': name, 'value': value } );
			};
		
			// DataTables 1.9- compatible method
			param( 'sEcho',          settings.iDraw );
			param( 'iColumns',       columnCount );
			param( 'sColumns',       _pluck( columns, 'sName' ).join(',') );
			param( 'iDisplayStart',  displayStart );
			param( 'iDisplayLength', displayLength );
		
			// DataTables 1.10+ method
			var d = {
				draw:    settings.iDraw,
				columns: [],
				order:   [],
				start:   displayStart,
				length:  displayLength,
				search:  {
					value: preSearch.sSearch,
					regex: preSearch.bRegex
				}
			};
		
			for ( i=0 ; i<columnCount ; i++ ) {
				column = columns[i];
				columnSearch = preColSearch[i];
				dataProp = typeof column.mData=="function" ? 'function' : column.mData ;
		
				d.columns.push( {
					data:       dataProp,
					name:       column.sName,
					searchable: column.bSearchable,
					orderable:  column.bSortable,
					search:     {
						value: columnSearch.sSearch,
						regex: columnSearch.bRegex
					}
				} );
		
				param( "mDataProp_"+i, dataProp );
		
				if ( features.bFilter ) {
					param( 'sSearch_'+i,     columnSearch.sSearch );
					param( 'bRegex_'+i,      columnSearch.bRegex );
					param( 'bSearchable_'+i, column.bSearchable );
				}
		
				if ( features.bSort ) {
					param( 'bSortable_'+i, column.bSortable );
				}
			}
		
			if ( features.bFilter ) {
				param( 'sSearch', preSearch.sSearch );
				param( 'bRegex', preSearch.bRegex );
			}
		
			if ( features.bSort ) {
				$.each( sort, function ( i, val ) {
					d.order.push( { column: val.col, dir: val.dir } );
		
					param( 'iSortCol_'+i, val.col );
					param( 'sSortDir_'+i, val.dir );
				} );
		
				param( 'iSortingCols', sort.length );
			}
		
			// If the legacy.ajax parameter is null, then we automatically decide which
			// form to use, based on sAjaxSource
			var legacy = DataTable.ext.legacy.ajax;
			if ( legacy === null ) {
				return settings.sAjaxSource ? data : d;
			}
		
			// Otherwise, if legacy has been specified then we use that to decide on the
			// form
			return legacy ? data : d;
		}
/**
		 * Build up the parameters in an object needed for a server-side processing
		 * request. Note that this is basically done twice, is different ways - a modern
		 * method which is used by default in DataTables 1.10 which uses objects and
		 * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if
		 * the sAjaxSource option is used in the initialisation, or the legacyAjax
		 * option is set.
		 *  @param {object} oSettings dataTables settings object
		 *  @returns {bool} block the table drawing or not
		 *  @memberof DataTable#oApi
		 */
Build up the parameters in an object needed for a server-side processing
request. Note that this is basically done twice, is different ways - a modern
method which is used by default in DataTables 1.10 which uses objects and
arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if
the sAjaxSource option is used in the initialisation, or the legacyAjax
option is set.
@param {object} oSettings dataTables settings object
@returns {bool} block the table drawing or not
@memberof DataTable#oApi
Build up the parameters in an object needed for a server - side processing request . Note that this is basically done twice is different ways - a modern method which is used by default in DataTables 1 . 10 which uses objects and arrays or the 1 . 9 - method with is name / value pairs . 1 . 9 method is used if the sAjaxSource option is used in the initialisation or the legacyAjax option is set . @param { object } oSettings dataTables settings object @returns { bool } block the table drawing or not @memberof DataTable#oApi
function _fnAjaxParameters( settings )
		{
			var
				columns = settings.aoColumns,
				columnCount = columns.length,
				features = settings.oFeatures,
				preSearch = settings.oPreviousSearch,
				preColSearch = settings.aoPreSearchCols,
				i, data = [], dataProp, column, columnSearch,
				sort = _fnSortFlatten( settings ),
				displayStart = settings._iDisplayStart,
				displayLength = features.bPaginate !== false ?
					settings._iDisplayLength :
					-1;
			var param = function ( name, value ) {
				data.push( { 'name': name, 'value': value } );
			};
			param( 'sEcho',          settings.iDraw );
			param( 'iColumns',       columnCount );
			param( 'sColumns',       _pluck( columns, 'sName' ).join(',') );
			param( 'iDisplayStart',  displayStart );
			param( 'iDisplayLength', displayLength );
			var d = {
				draw:    settings.iDraw,
				columns: [],
				order:   [],
				start:   displayStart,
				length:  displayLength,
				search:  {
					value: preSearch.sSearch,
					regex: preSearch.bRegex
				}
			};
			for ( i=0 ; i<columnCount ; i++ ) {
				column = columns[i];
				columnSearch = preColSearch[i];
				dataProp = typeof column.mData=="function" ? 'function' : column.mData ;
				d.columns.push( {
					data:       dataProp,
					name:       column.sName,
					searchable: column.bSearchable,
					orderable:  column.bSortable,
					search:     {
						value: columnSearch.sSearch,
						regex: columnSearch.bRegex
					}
				} );
				param( "mDataProp_"+i, dataProp );
				if ( features.bFilter ) {
					param( 'sSearch_'+i,     columnSearch.sSearch );
					param( 'bRegex_'+i,      columnSearch.bRegex );
					param( 'bSearchable_'+i, column.bSearchable );
				}
				if ( features.bSort ) {
					param( 'bSortable_'+i, column.bSortable );
				}
			}
			if ( features.bFilter ) {
				param( 'sSearch', preSearch.sSearch );
				param( 'bRegex', preSearch.bRegex );
			}
			if ( features.bSort ) {
				$.each( sort, function ( i, val ) {
					d.order.push( { column: val.col, dir: val.dir } );
					param( 'iSortCol_'+i, val.col );
					param( 'sSortDir_'+i, val.dir );
				} );
				param( 'iSortingCols', sort.length );
			}
			var legacy = DataTable.ext.legacy.ajax;
			if ( legacy === null ) {
				return settings.sAjaxSource ? data : d;
			}
			return legacy ? data : d;
		}
function _fnAjaxParameters ( settings ) { var columns = settings . aoColumns , columnCount = columns . length , features = settings . oFeatures , preSearch = settings . oPreviousSearch , preColSearch = settings . aoPreSearchCols , i , data = [ ] , dataProp , column , columnSearch , sort = _fnSortFlatten ( settings ) , displayStart = settings . _iDisplayStart , displayLength = features . bPaginate !== false ? settings . _iDisplayLength : - 1 ; var param = function ( name , value ) { data . push ( { 'name' : name , 'value' : value } ) ; } ; param ( 'sEcho' , settings . iDraw ) ; param ( 'iColumns' , columnCount ) ; param ( 'sColumns' , _pluck ( columns , 'sName' ) . join ( ',' ) ) ; param ( 'iDisplayStart' , displayStart ) ; param ( 'iDisplayLength' , displayLength ) ; var d = { draw : settings . iDraw , columns : [ ] , order : [ ] , start : displayStart , length : displayLength , search : { value : preSearch . sSearch , regex : preSearch . bRegex } } ; for ( i = 0 ; i < columnCount ; i ++ ) { column = columns [ i ] ; columnSearch = preColSearch [ i ] ; dataProp = typeof column . mData == "function" ? 'function' : column . mData ; d . columns . push ( { data : dataProp , name : column . sName , searchable : column . bSearchable , orderable : column . bSortable , search : { value : columnSearch . sSearch , regex : columnSearch . bRegex } } ) ; param ( "mDataProp_" + i , dataProp ) ; if ( features . bFilter ) { param ( 'sSearch_' + i , columnSearch . sSearch ) ; param ( 'bRegex_' + i , columnSearch . bRegex ) ; param ( 'bSearchable_' + i , column . bSearchable ) ; } if ( features . bSort ) { param ( 'bSortable_' + i , column . bSortable ) ; } } if ( features . bFilter ) { param ( 'sSearch' , preSearch . sSearch ) ; param ( 'bRegex' , preSearch . bRegex ) ; } if ( features . bSort ) { $ . each ( sort , function ( i , val ) { d . order . push ( { column : val . col , dir : val . dir } ) ; param ( 'iSortCol_' + i , val . col ) ; param ( 'sSortDir_' + i , val . dir ) ; } ) ; param ( 'iSortingCols' , sort . length ) ; } var legacy = DataTable . ext . legacy . ajax ; if ( legacy === null ) { return settings . sAjaxSource ? data : d ; } return legacy ? data : d ; }
Build up the parameters in an object needed for a server-side processing
 request.
Build up the parameters in an object needed for a server - side processing request .
// DataTables 1.9- compatible method // DataTables 1.10+ method // If the legacy.ajax parameter is null, then we automatically decide which // form to use, based on sAjaxSource // Otherwise, if legacy has been specified then we use that to decide on the // form