Umbrella JS предоставляет компактный и удобный API для выполнения
асинхронных запросов к серверу и обработки полученных данных. Основной
метод для работы с сервером — u.ajax(), который позволяет
отправлять HTTP-запросы различного типа и управлять ответами.
u.ajax()Метод принимает объект настроек с параметрами запроса:
u.ajax({
url: '/api/data',
method: 'GET',
data: { id: 123 },
headers: { 'X-Custom-Header': 'value' },
success: function(response) { console.log(response); },
error: function(error) { console.error(error); }
});
Основные параметры:
GET,
POST, PUT, DELETE), по умолчанию
GET.GET-запросов они преобразуются в query
string.Umbrella JS автоматически пытается распарсить ответ сервера как JSON,
если он имеет соответствующий заголовок
Content-Type: application/json. Это позволяет работать с
объектами напрямую:
u.ajax({
url: '/api/users',
method: 'GET',
success: function(data) {
data.forEach(user => console.log(user.name));
},
error: function(err) {
console.error('Ошибка получения данных:', err);
}
});
Если сервер возвращает текст или HTML, response будет
строкой.
Хотя u.ajax() традиционно использует колбэки, возможно
обернуть его в промис для использования async/await:
function fetchData(url) {
return new Promise((resolve, reject) => {
u.ajax({
url: url,
method: 'GET',
success: resolve,
error: reject
});
});
}
async function loadUsers() {
try {
const users = await fetchData('/api/users');
console.log(users);
} catch (err) {
console.error(err);
}
}
Это упрощает цепочку асинхронных действий и делает код более читабельным.
В объекте ошибки, передаваемом в error, содержится
информация о статусе и тексте ответа:
u.ajax({
url: '/api/data',
method: 'GET',
error: function(xhr) {
console.log('Статус:', xhr.status);
console.log('Текст ошибки:', xhr.statusText);
}
});
Это позволяет гибко реагировать на ошибки сервера, например,
различать 404 Not Found и
500 Internal Server Error.
Для POST-запросов данные можно передавать в объекте
data:
u.ajax({
url: '/api/save',
method: 'POST',
data: { name: 'John', age: 30 },
success: function(response) {
console.log('Сохранено:', response);
}
});
Если нужно отправить данные в формате JSON, их следует
преобразовать:
u.ajax({
url: '/api/save',
method: 'POST',
data: JSON.stringify({ name: 'John', age: 30 }),
headers: { 'Content-Type': 'application/json' },
success: function(response) {
console.log(response);
}
});
Для параллельной загрузки нескольких ресурсов используется комбинация
Promise.all и обёртки u.ajax в промис:
async function loadMultiple() {
try {
const [users, posts] = await Promise.all([
fetchData('/api/users'),
fetchData('/api/posts')
]);
console.log(users, posts);
} catch (err) {
console.error(err);
}
}
Это удобно при необходимости получить данные из нескольких источников одновременно.
Umbrella JS позволяет задать максимальное время ожидания ответа
сервера через параметр timeout (в миллисекундах):
u.ajax({
url: '/api/data',
timeout: 5000,
error: function(xhr) {
if (xhr.status === 0) {
console.log('Превышено время ожидания запроса');
}
}
});
Если сервер не успевает ответить в указанное время, срабатывает ошибка.
Umbrella JS подходит для динамической загрузки данных на страницы без перезагрузки, обработки форм и взаимодействия с REST API. Его компактность и простота делают его удобным инструментом для легких проектов и учебных целей, где не требуется тяжеловесный jQuery или Axios.
Фокус на u.ajax() и правильной обработке ответов сервера
обеспечивает быстрый и безопасный обмен данными между клиентом и
сервером с минимальным количеством кода.