Ну смотрите вы делаете доп. свойство в фильтре по вашему полю, потом отлавливаете его в result_modifier. Удаляете его отображение. Смотрите что пришло в arresult - а именно не пришёл ли уже сабмит формы. Если пришёл находим уровень вложенности элементов. Опрделяем сколько строить select' ов для отображения. Определяем родительский уровень. Собираем все родительские уровни начиная с корня. Т.е. 1. Вытаскиваем сначала всех родителей.
2. Определям нужен ли нам ещё один уровень если да то забираем второй уровень выбранного или ничего для других.
3. По дефолту наш скрытый псевдо селект будет пустым.
4. При изменение первого уровня подгружаем следущий уровень и обновляем скрытий селект новым значением и т.д. по вложенности элементов.
По поводу ajax - я делаю вопреки битрикса ибо привык с нормальным ajax без всяких сбросов кеша страниц и всякий дребутиски которая не всегда работает.
По - этому пользуюсь исключительно Get - запросом. Post поистене творит неимоверные действия такие как Загрузка всей страницы в окне корзины.
Пример:
Код |
---|
$(document).ready(function(){
$('.basketAdd').click(function(){
$.get("/AjaxSender.php", {itemID : this.getAttribute('id'), send:'add', mode:'ajax'},
function(data){
alert('Сервер сказал'+data);
}
);
return false;
});
}); |
В корне собственно сам AjaxSender.php
Код |
---|
<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest'){
if($_REQUEST['mode'] == 'ajax'){
$APPLICATION->RestartBuffer();
//... необходимымые манипуляйии с данными.
echo "и то чт о мы вернём клиенту.";
die();
}
} else LocalRedirect("/");
?> |