Пагинация на ajax bitrix

← разместить еще код

Для того, чтобы реализовать пагинацию на аяксе, достаточно передавать параметры из ссылок, которые генерируются с помощью $pag = $res->GetPageNavStringEx($navComponentObject, "", 'modern'); в аякс. В аяксе уже обрабатываем строку, передавая параметры в $_GET ДО вызова пролога, чтобы они были съедены гетлистом. А также делательно установить параметр nav_page_in_session: CPageOption::SetOptionString("main", "nav_page_in_session", "N"); . Дальше GetList сам все сделает.

Расшаренный код:

//JS

$('body').delegate('.modern-page-navigation a','click',function(){
	if($(this).hasClass('modern-page-current')) return false;
	var val = $(this).attr('href');
	val = val.split('?');
	load_knowledge(val[1]);
	return false;
});

function load_knowledge(get){
	var val = $('#form-filter__name').val();
	var count = $('#form-filter__num').val();
	var section = $('#form-filter__section').val();
	var tag = $('#form-filter__tag').val();
	var data = {};
	data['val'] = val;
	data['count'] = count;
	data['section'] = section;
	data['tag'] = tag;

	$.ajax({
		url: '/apps/suz/ajax.php',
		type: 'POST',
		dataType: 'html',
		data: {
			'ajax': 'load_knowledge',
			'data': data,
			'url': location.pathname,
			'get': get
		},
		success: function(response){
			console.info(response);
			$('.knowledge_block_list').html(response);
		}
	});

}


//PHP

if(strlen($_POST['get'])>0) $get = explode("&",$_POST['get']);
foreach($get as $getI){
	$getI = explode("=",$getI);
	$_GET[$getI[0]] = $getI[1];
}

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");	
if(!CModule::IncludeModule('iblock')) die('error');	

CPageOption::SetOptionString("main", "nav_page_in_session", "N"); 

require_once($_SERVER['DOCUMENT_ROOT'].'/apps/suz/prolog.php');

getlist...