JS функції
У файлі "ajx.js" розташовані функції для виконання аякс-запиту за допомогою js-об'єкта "XMLHttpRequest".
Функція post
- Аргументи функції:
- url: до якого відкривається (XMLHttpRequest.open) асинхронний запит.
- f: callback-функція, що обробляє результат запиту на подію "onreadystatechange" об'єкта "XMLHttpRequest": за його "readyState" = 4.
- params: дані для відправки
- type: може вказуватися "Content-type" даних у заголовку (Header) запиту.
- method: може вказуватися метод запиту за промовчанням "POST".
- progressBar: може вказуватися елемент «progress» — прогрес виконання запиту, що наочно відображає прогрес, якщо не вказано — цей елемент шукається на сторінці, може бути відсутнім.
- Header: може вказуватися масив додаткових заголовків HTTP — наприклад, для вказівки браузеру не кешувати запит.
Застосовується у функціях "ajx" та "ajxFormData", де запит до URL "/lang/?ajx" - до "index.php" при цьому підключається файл "/1/ajx.php".
Тут "lang" - атрибут тега "HTML" сторінки, зазвичай вказує мову - наприклад "en", може вказувати папку - наприклад "/help".
Функція "ajx"
Для передачі даних текстом.
- Аргументи:
- event. Може використовуватися для об'єкта "подія" в callback-функції, що передається п'ятим аргументом. Не обов'язковий, може використовуватись з іншою метою.
- Ім'я першого поля запиту (POST). Файл "/1/ajx.php" підключає файл PHP з цим ім'ям - за наявності файлу і якщо ім'я поля не в списку для підключення файлу до папки "/1/core/".
- Дані: текстове значення першого поля. Через символ "&" можуть слідувати інші поля.
- div: блок: куди поміщати відповідь на запит (txt). Якщо div - TEXTAREA, то в "value", інакше в "innerHTML". Об'єкт може бути перепризначений в callback-функції. Якщо є відповідь (txt) і div не вказано - відповідь відображається у спливаючому вікні - функцією "showDiv".
- callback скрипт або функція може бути масивом: перший скрипт або функція виконується до виконання (приміщення тексту в блок),
другий скрипт або функція після виконання.
Приклад такої функції: f(evt,txt,div){div.checked=(txt==1)}. Тут аргументи: подія "event" з 1 аргументу, результат (відповідь на запит), блок "div" із 4 аргументів. - b:
- відповідь на запит не поміщати в div (при b=1)
- поміщати в div GIF (або SVG) очікування (при b=2)
- відповідь поміщати, але не поміщати зображення очікування (при b=3)
- title: заголовок тексту відповіді
- modal: =1: відповідь у модальному вікні
- method: "POST" за промовчанням можна задати "GET" або інший.
Виконується описана вище функція "post": запит до URL типу "/en/?ajx", де "en" — мова сторінки "lang" (<html lang="en">).
Окрім відображення прогресу виконання запиту в тезі «PROGRESS» — може відображатись картинка очікування "<img class=ajxT src=/i/t.gif>" — якщо відображення відповіді передбачається виконання запиту довше 100 мс.
Функція "ajxFormData"
Для передачі форм даних методом "POST". Файл "/1/ajx.php" підключає PHP-файл з ім'ям першого елемента форми - за наявності такого файлу і якщо ім'я не в списку для підключення файлу до папки "/1/core/".
- Аргументи:
- event. Може використовуватися для об'єкта "подія" в callback-функції, що передається третім аргументом. Не обов'язковий, може використовуватися в інших цілях.
- form: HTML-форма
- js: callback скрипт або функція, може бути масивом: перший скрипт або функція виконується до виконання (приміщення тексту до блоку), другий скрипт або функція після виконання.
- div: блок: куди поміщати відповідь на запит (txt), якщо не вказано — поміщати у форму, вказану другим аргументом.
- b: не відображати відповіді на запит.
Виконується описана вище функція "post": запит до URL типу "/en/?ajx", де "en" — мова сторінки "lang" (<html lang="en">) .
Якщо відповідь поміщається у форму, розташовану в блоці з класом "ajxAlert" зі спливаючою вікном - це вікно центрується, його ширина може змінюватися за розміром даних.
Функція "showDiv"
Використовується у функції "ajx", може використовуватися і в інших функціях, наприклад "Alert", розташованої у файлі "f.js".
Створює блок із класом "ajxAlert" або - при
непустому четвертому аргументі – використовує існуючий.
Це блок в абсолютній позиції у вікно браузера, містить блок напівпрозорого фону і спливаюче блок з текстом першого аргументу.
- Аргументи:
- txt: текст спливаючого блоку
- a: опціонально — елемент, на який можна встановлювати фокус під час відкриття
- modal: опціонально — ознака модальності вікна: не закривати при натисканні поза вікном, що впливає
- instead: опціонально — ознака, що слід замінювати існуючий блок із класом "ajxAlert".