BX.ajax
XMLHttpRequest BX.ajax( object params );
Низкоуровневая функция для отправки аяксовых запросов. Формат объекта params:
{ url: URL запроса method: GET|POST data: POST-данные для отправки (строка или объект) dataType: html|json|script – данные какого типа предполагаются в ответе timeout: 60 – таймаут запроса в секундах async: true|false – должен ли запрос быть асинхронным или нет processData: true|false – нужно ли сразу обрабатывать данные? scriptsRunFirst: false|true – нужно ли выполнять все найденные скрипты перед тем, как отдавать содержимое обработчику или только те, в тэге которых присутствует атрибут bxrunfirst emulateOnload: true|false – нужно ли эмулировать событие window.onload для загруженных скриптов start: true|false – отправить ли запрос сразу или он будет запущен вручную cache: true|false – в случае значения false к параметру URL будет добавляться случайный кусок, чтобы избежать браузерного кэширования onsuccess: функция-обработчик результата onfailure: функция-обработчик ошибки }
Функция возвращает ссылку на объект XMLHttpRequest, при помощи которого осуществляется запрос. В случае успеха запроса будет вызван обработчик onsuccess. В качестве параметра будет результат запроса. Если параметр processData установлен в true, то обработка будет в зависимости от типа данных:
- html: результат будет очищен от js-кода. Код будет выполнен после передачи данных обработчику. Перед передачей будут выполнены все скрипты с атрибутом bxrunfirst, или все скрипты, если параметр scriptsRunFirst установлен в true;
- script: полученный результат будет передан обработчику и выполнен. Что раньше – определяется параметром scriptsRunFirst
- json: результат будет интерпретирован как описание объекта в формате json. Обработчик получит объект.
Если подключена библиотека для работы с localStorage (core_ls), то помимо перечисленных параметров можно использовать указать параметры:
- lsId – строковой идентификатор для передачи данных запроса между различными вкладками;
- lsTimeout – время жизни данных запроса
- lsForce - false|true
Эти параметры предназначены для интерфейсов, постоянно опрашивающих сервер с целью получения каких-либо данных. В этом случае данные запроса будут сохраняться в localStorage, и если в любой вкладке текущего браузера будет сделан запрос с тем же самым lsId, то вместо совершения запроса обработчик получит данные, сохраненные в localStorage. Соответственно, lsTimeout должен быть чуть меньше интервала отправки запросов. Параметр lsForce позволяет принудительно отправить запрос в обход проверки наличия данных в localStorage и обновить это данные.