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 и обновить это данные.
Сообщение не промодерировано, возможны ошибки и неточности.
|
||||
Если используете jQuery ajax, тогда необходимо значение false присвоить параметрам: processData и contentType.
| ||||
Алексей Попович
|
||
Пример скрипт обработки php-массива
Имеем php-массив с какими-то данными ($PRICE_LIST_DATA). каждую строку массива нужно отправлять ajax-ом в файл на обработку и при это публиковать пользователю результат работы каждого шага. В файле с php после получения массива выводим скрипт: (простите за смесь BX и jquery).
| ||
Александр Павлов
|
||||
| ||||
Алексей Попович
|
||
пример использования:
скрипт лежит в файле template.php какого-нибудь шаблона компонента. файл для обработки аякс-запросов, ajax.php лежит в папке с данным шаблоном P.S. добавил пример, т.к. очень долго не мог понять, в чем же у меня ошибка. а ошибка оказалась вообще глупой: забыл параметры в фигурные скобки передать и передавал как: BX.ajax(параметры) P.P.S как передавать пост-параметры, так и не нашел, поэтому передаю их в адресной строке... Если у кого есть идеи по поводу того, как пост-параметры передать - очень было бы хорошо увидеть... | ||
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.