Dom7 — это легковесная библиотека для работы с DOM,
тесно интегрированная с фреймворком Framework7, но также
используемая и отдельно. Одной из её мощных функций является метод
ajax(), который позволяет выполнять асинхронные
HTTP-запросы, аналогично XMLHttpRequest или
fetch, но с упрощённым синтаксисом и встроенной обработкой
ответов.
Метод ajax() вызывается как функция объекта
Dom7:
$.ajax({
url: 'https://api.example.com/data',
method: 'GET',
data: { id: 123 },
dataType: 'json',
success: function (response) {
console.log(response);
},
error: function (xhr, status) {
console.error('Ошибка запроса', status);
},
complete: function (xhr, status) {
console.log('Запрос завершён');
}
});
Ключевые параметры:
url — адрес запроса.method — HTTP-метод: 'GET',
'POST', 'PUT', 'DELETE'.data — данные, отправляемые на сервер. Для GET-запросов
они преобразуются в query string.dataType — ожидаемый формат ответа:
'json', 'text', 'html',
'xml'.success — функция, вызываемая при успешном выполнении
запроса.error — функция, вызываемая при ошибке запроса.complete — функция, вызываемая после завершения
запроса, независимо от результата.GET-запрос:
$.ajax({
url: '/api/users',
method: 'GET',
dataType: 'json',
success: function (users) {
console.log(users);
}
});
При GET-запросе объект data автоматически сериализуется
в параметры URL:
$.ajax({
url: '/api/users',
method: 'GET',
data: { page: 2, limit: 10 },
success: function (response) {
console.log(response); // /api/users?page=2&limit=10
}
});
POST-запрос:
$.ajax({
url: '/api/users',
method: 'POST',
data: { name: 'Иван', age: 25 },
dataType: 'json',
success: function (response) {
console.log(response);
}
});
Для POST-запросов data отправляется в теле запроса в
формате application/x-www-form-urlencoded по умолчанию.
Чтобы отправить JSON на сервер, необходимо преобразовать объект в
строку и указать заголовок Content-Type:
$.ajax({
url: '/api/users',
method: 'POST',
contentType: 'application/json',
data: JSON.stringify({ name: 'Мария', age: 30 }),
dataType: 'json',
success: function (response) {
console.log(response);
}
});
При использовании dataType: 'json' библиотека
автоматически преобразует JSON-строку ответа в объект JavaScript.
Метод ajax() позволяет гибко обрабатывать ошибки:
$.ajax({
url: '/api/users/999',
method: 'GET',
dataType: 'json',
success: function (data) {
console.log('Данные получены', data);
},
error: function (xhr, status) {
console.log('Статус ошибки:', status);
console.log('Код ответа:', xhr.status);
console.log('Текст ошибки:', xhr.statusText);
}
});
Параметры функции error:
xhr — объект XMLHttpRequest.status — строка с типом ошибки ('timeout',
'error', 'abort',
'parsererror').Dom7 позволяет задавать дополнительные настройки запроса:
$.ajax({
url: '/api/data',
method: 'GET',
timeout: 5000, // время ожидания в миллисекундах
headers: {
'Authorization': 'Bearer token',
'X-Custom-Header': 'value'
},
success: function (data) {
console.log(data);
},
error: function (xhr, status) {
console.error('Ошибка или таймаут', status);
}
});
timeout — прерывает запрос после указанного
времени.headers — объект с заголовками HTTP.В последних версиях Dom7 метод ajax() возвращает объект
Promise, что позволяет использовать .then() и
.catch():
$.ajax({
url: '/api/users',
method: 'GET',
dataType: 'json'
})
.then(function (data) {
console.log('Успешно:', data);
})
.catch(function (err) {
console.error('Ошибка:', err);
});
Такой подход упрощает организацию последовательных или параллельных запросов без вложенных колбэков.
$.ajax({ url: '/api/users', method: 'GET', dataType: 'json' })
.then(function (users) {
console.log('Пользователи:', users);
return $.ajax({ url: '/api/details', method: 'POST', data: { id: users[0].id }, dataType: 'json' });
})
.then(function (details) {
console.log('Детали пользователя:', details);
})
.catch(function (error) {
console.error('Ошибка цепочки запросов', error);
});
Dom7 поддерживает отправку запросов на другие домены при условии правильной настройки CORS на сервере:
$.ajax({
url: 'https://external-api.com/data',
method: 'GET',
dataType: 'json',
success: function (data) {
console.log(data);
},
error: function (xhr, status) {
console.error('CORS ошибка или другой сбой', status);
}
});
Использование xhrFields: { withCredentials: true }
позволяет передавать куки и авторизационные заголовки при кросс-доменных
запросах.
ajax()dataType: 'json'.success, error,
complete.ajax() Dom7 сочетает лаконичность синтаксиса и
функциональность, позволяя легко интегрировать асинхронные запросы в
приложения на JavaScript.