Page 145 - 6108
P. 145
Метод getAllResponseHeaders() – повертає всі заголовки відповіді,
крім Set-Cookie і Set-Cookie2. Заголовки повертаються у вигляді єдиної
рядки, наприклад:
date: Thu, 18 Jan 2018 06:49:42 GMT
etag: W/"11-ZX6Es82fjw2ukpTAI31TeQRigE0"
connection: keep-alive
x-powered-by: Express
content-length: 17
content-type: text/html; charset=utf-8
Окремі заголовки розділені двома символами переводу рядки "\r \ n" (не
залежить від ОС), значення заголовка відокремлено від його назви двокрапкою
з пробілом ": ". Цей формат заданий стандартом. Таким чином, якщо треба
отримати об'єкт з парами заголовок-значення, то цей рядок необхідно розбити і
обробити.
Повний список подій
Сучасна специфікація передбачає наступні події по ходу обробки запиту:
– loadstart – запит розпочато.
– progress – браузер отримав черговий пакет даних, можна прочитати
поточні отримані дані responseText.
– abort – запит був скасований викликом xhr.abort().
– error – сталася помилка.
– load – запит був успішно (без помилок) завершений.
– timeout – запит був припинений через таймаут.
– loadend – запит був завершений (успішно чи неуспішно)
Використовуючи ці події можна більш зручно відстежувати завантаження
(onload) і помилку (onerror), а також кількість завантажених даних
(onprogress).
if (xhr.status! = 200) {//Якщо код відповіді сервера не 200,
то це // помилка
alert(xhr.status + ':' + xhr.statusText); // обробка
помилки
} else {
alert (xhr.responseText); //обробка результату
}
3.6.3 Робота з формами
Під час звичайної відправки форми <form> браузер збирає значення її
полів, робить з них рядок і становить тіло GET/POST-запиту для відправки на
сервер. При відправці даних через XMLHttpRequest, це потрібно робити
самостійно, в JS-коді
GET-запит
Формуючи XMLHttpRequest, слід формувати запит вручну, кодуючи поля
функцією encodeURIComponent().
let xhr = new XMLHttpRequest ();
let params = 'name =' + encodeURIComponent (name) +
'&Surname =' + encodeURIComponent (surname);
xhr.open ( "GET", '/ submit?' + params);