Довольно недавно столкнулся с тем как организовать свой AJAX запрос в 1С Битрикс. Как правило почти все встроенные компоненты имеют встроенную поддержку AJAX и включается в настройках компонента, но думаю в большинстве случаев Вам самим придется писать компоненты с данным функционалом.
Слева на картинке представлена обычная структура директорий и файлов для компонента в Битрикс. Сразу хочу заметить, что в этой статье я расскажу как организовать AJAX запрос, а не создание компонента. В моем компоненте уже добавлены необходимые файлы, у Вас файла script.js может не оказаться. В Битрикс файлы именованные как script.js и style.css подгружаются автоматически при загрузке компонента.
Свой AJAX скрипт можно разместить в шаблоне template.php или в script.js, свой скрипт я помещу в последний. Это может быть самый простой скрипт:
$("#button").click(function () { $.ajax({ url: $('#FORM').attr('action'), type: "POST", data: { Name : 'Petr' }, dataType: "json", success: function(data){ alert(data.message); } }); });
На счет параметра url - как правило в Битрикс можно брать адрес указанный в форме компонента, в таком случае Вы сможете обработать свой запрос причем не только в своей компоненте. Единственный недостаток данного подхода в том, что в ответ Вам будет возвращена вся страница, а это нас не устраивает, нам нужен обычный и короткий JSON ответ.
Для этого в файле component.php, Вам нужно обработать собственный запрос, к примеру так (самый простой пример):
if(isset($_POST['Name'])) { $APPLICATION->RestartBuffer(); $authData = array('message' => 'AJAX'); echo json_encode($authData); exit(); }
В данном случае мы проверяем, что существует элемент в POST запросе, дальше мы очищаем буфер - делается это для того, чтобы убрать все наполнение которое могло быть сгенерировано до того как выполнение PHP скрипта дошло до нашего компонента. Дальше мы формируем JSON массив, выводим его и останавливаем дальнейшее выполнение скрипта - иначе за нашим массивом будет идти сгенерированный контент и ответ будет испорчен.
На этом все, надеюсь мой пример поможет Вам понять как организовать AJAX в Битрикс.