Читати Урок ()

↑ Ajax
Урок - jQuery.post()
← Попередній урок

Метод jQuery.post() виконує HTTP POST-запит для отримання даних із сервера.

Синтаксис методу jQuery.post()

jQuery.post( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )

  • url - рядок, що містить URL запиту, для надсилання даних.
  • data – рядок або Plain-об'єкт (асоціативний масив), даних для відправки на сервер.
  • success(data, textStatus, jqXHR) - функція зворотного виклику, що викликається якщо запит успішний.
  • dataType - рядок, тип даних, що очікуються від сервера. За замовчуванням jQuery намагається визначити автоматично (xml, json, script чи html).

Приклад нижче, еквівалент jQuery.post() у виконанні jQuery.ajax():

Починаючи з версії jQuery 1.5, у функцію success передається jqXHR-об'єкт.

У більшості реалізація обробник success задається наступним чином:

У цьому прикладі запитується HTML-код і вставляється на сторінку в вказане місце.

Дані, отримані методом jQuery.post(), ніколи не кешуються, таким чином параметри cache та ifModified методу jQuery.ajaxSetup() будуть ігноруватися.

jqXHR-об'єкт.

З версії jQuery 1.5, всі AJAX-методи повертають розширений об'єкт XMLHttpRequest. Це XHR-об'єкт jQuery або коротко jqXHR, повертається jQuery.post() реалізуючи Promise-інтерфейс, надаючи йому всі властивості, методи та поведінку Promise (дивіться Відкладений об'єкт для отримання додаткової інформації). jqXHR.done() (замість success), jqXHR.fail() (замість error) та jqXHR.always() (замість complete) приймають аргумент функції, яка викликається, коли запит завершується. ДляЩоб отримати інформацію про аргументи цієї функції, зверніться до розділу документації jQuery.ajax().

Promise-інтерфейс також дозволяє AJAX-методам в jQuery, зокрема і JQuery.post(), створити ланцюжок з jqXHR.done(), jqXHR.fail(), jqXHR.always(), тобто. з кількох методів зворотного дзвінка на один запит, і навіть призначити ці функції після того, як запит був завершений. Якщо запит вже завершено, призначені методи будуть виконані відразу ж.

Застарілі обробники.

Методи jqXHR.success(), jqXHR.error(), jqXHR.complete() є застарілими з версії jQuery 1.8. У майбутньому ці методи буде видалено. Використовуйте замість них jqXHR.done(), jqXHR.fail(), jqXHR.always() відповідно.

Додаткова примітка.

  • Через обмеження безпеки браузерів більшість AJAX-запитів обмежені тією ж політикою безпеки. AJAX-запити не можуть успішно отримувати інформацію з інших доменів, піддоменів або протоколів.
  • Якщо під час запиту jQuery.get() виникає помилка, це станеться непомітно, доки не буде викликаний глобальний метод jQuery.ajaxError(). Альтернативою обробки помилок, починаючи з версії jQuery 1.5, може бути об'єкт jqXHR, що повертається jQuery.get().

Приклад: Виконується запит на сторінку test.php, але обробка даних не виконується.

Приклад: Запит на сторінку test.php з надсиланням деяких даних (без обробки отриманих даних).

Приклад: Передається масив даних на сервер без обробки отриманих даних.

Приклад: надсилання даних форми, використовуючи Ajax-запит.

Приклад: Сповіщаємо про успішне отримання даних зі сторінки test.php (HTML або XML, залежно від даних).

Приклад: Сповіщаємо про успішне отримання даних зі сторінкиtest.cgi з додатковою відправкою даних (HTML або XML, залежно від отриманих даних).

Приклад: Отримати вміст сторінки test.php, що повертаються в JSON-форматі ("John", "time"=>"2pm")); ?>), і вивести їх на сторінку.

Приклад: Надсилання даних форми, використовуючи Ajax-запит і вставляння отриманих даних в div.