По идее, нужно сначала делать noajax версию, классическую так сказать, а потом уже поверх нее прикручивать обработчики событий, которые будут подгружать результаты фильтра через ajax.
Причем, если на js использовать объект history, то можно управлять и адресной строкой, т.е. для пользователя ajax становится приятным дополнением - страница загрузится быстрее, чем при полной перезагрузке; Но и полная перезагрузка остается полностью функциональной.
Пример кода с использованием jquery:
$('#filter_form').submit(function(){
if (undefined != history)
{
var url = $(this).attr('action') + '?' + $(this).serialize();
history.replaceState({}, '', url);
$.get(
url,
{},
function(answ){
$('#content').html($(answ).find('#content').html());
afterAjax();
},
'html'
);
return false;
}
});
Посмотреть как работает можно здесь:
aacase.ru/catalog