Перейти к содержимому

AJAX в 1С-Битрикс - запросы к своему коду и к компонентам

AJAX - подтема на 8 вопросов из собранных. Почти все они об одном: запрос уходит, а в ответ приходит не то, что ожидалось.

Что общего у этих задач

Запрос всегда идёт в какой-то файл сайта. Это либо контроллер модуля, либо свой файл с подключённым ядром, либо страница с компонентом в режиме обмена. Выбор точки входа определяет всё остальное: права, ответ и цену запроса.

Ядро подключается отдельно и осознанно. Файл без подключения ядра ничего не знает ни о пользователе, ни о базе, а полное подключение стоит почти столько же, сколько обычная страница. Отсюда правило: лёгким запросам - лёгкое подключение.

Ответ должен быть чистым. Любой лишний вывод до ответа - предупреждение PHP, пробел в файле, отладочная печать - ломает разбор ответа на стороне браузера, и выглядит это как «запрос не работает».

Права и проверки никуда не исчезают. Отдельная точка входа проверяет ключ сеанса и доступ так же строго, как обычная страница, иначе её начинают дёргать посторонние.

Ответ разбирает браузер, а не человек. Понятный формат ошибки с кодом и текстом экономит часы разбора и позволяет показать посетителю причину, а не общее «что-то пошло не так».

Решения подтемы

Частые вопросы

Чем контроллер лучше своего файла?

Он сам разбирает параметры, проверяет права и отдаёт ответ в едином формате. Свой файл даёт полную свободу и требует всё это писать руками.

Почему в ответ приходит вся страница?

Запрос ушёл на обычную страницу сайта, а не в точку обмена. Компонент в режиме обмена и контроллер отдают только свою часть.

Нужно ли подключать ядро в файле-обработчике?

Да, иначе API платформы недоступно. Для лёгких ответов подключают ядро в облегчённом режиме, без пролога публичной части.

Почему ответ не разбирается на стороне браузера?

В него попал посторонний вывод: предупреждение PHP, пробел перед открывающим тегом или отладочная печать. Ответ должен содержать только данные.

Связанные темы

Первоисточники