Метод ajax и его параметры

Библиотека Cash предоставляет метод ajax, который позволяет выполнять асинхронные HTTP-запросы к серверу, аналогично функции $.ajax из jQuery. Этот метод является гибким инструментом для работы с сетевыми запросами, поддерживает настройку параметров, обработку ошибок и управление временем ожидания ответа.


Основной синтаксис

cash.ajax(url, options);
  • url — строка, указывающая адрес запроса.
  • options — объект с параметрами запроса.

Метод возвращает объект Promise, что позволяет использовать .then() и .catch() для обработки ответа или ошибки.

cash.ajax('/api/data', {
    method: 'GET',
    dataType: 'json'
}).then(response => {
    console.log(response);
}).catch(error => {
    console.error(error);
});

Параметры объекта options

Объект options поддерживает множество настроек, которые можно комбинировать для реализации любых сценариев работы с HTTP-запросами.

method

Определяет HTTP-метод запроса.

Допустимые значения:

  • 'GET' — получение данных.
  • 'POST' — отправка данных.
  • 'PUT' — обновление данных.
  • 'DELETE' — удаление ресурсов.

По умолчанию используется 'GET'.

cash.ajax('/api/items', {
    method: 'POST',
    data: { name: 'item1', quantity: 5 }
});

data

Данные, отправляемые на сервер.

  • Для методов POST, PUT, PATCH данные передаются в теле запроса.
  • Для метода GET данные автоматически сериализуются в строку запроса (query string).

Примеры:

// GET-запрос с параметрами
cash.ajax('/api/items', {
    method: 'GET',
    data: { page: 2, limit: 10 }
});

// POST-запрос с телом JSON
cash.ajax('/api/items', {
    method: 'POST',
    data: { name: 'New Item', price: 100 }
});

dataType

Определяет ожидаемый формат ответа.

Поддерживаемые значения:

  • 'json' — объект JSON.
  • 'text' — обычный текст.
  • 'html' — HTML-код.
  • 'xml' — XML-документ.
cash.ajax('/api/items', {
    method: 'GET',
    dataType: 'json'
}).then(data => {
    console.log(data); // автоматически распарсенный объект
});

headers

Позволяет задавать дополнительные HTTP-заголовки запроса.

cash.ajax('/api/items', {
    method: 'GET',
    headers: {
        'Authorization': 'Bearer token123',
        'Accept': 'application/json'
    }
});

timeout

Максимальное время ожидания ответа сервера в миллисекундах. Если время превышено, промис отклоняется с ошибкой timeout.

cash.ajax('/api/items', {
    method: 'GET',
    timeout: 5000
}).catch(error => {
    if (error === 'timeout') {
        console.warn('Сервер не ответил вовремя');
    }
});

success и error

Хотя метод возвращает промис, Cash также поддерживает колбэки success и error для совместимости с классическим стилем.

cash.ajax('/api/items', {
    method: 'GET',
    success: response => console.log('Данные:', response),
    error: err => console.error('Ошибка:', err)
});

beforeSend

Функция, вызываемая перед отправкой запроса. Позволяет модифицировать объект запроса или отменить его.

cash.ajax('/api/items', {
    method: 'GET',
    beforeSend: xhr => {
        xhr.setRequestHeader('X-Custom-Header', 'value');
    }
});

cache

Булевый параметр, определяющий использование кэширования для GET-запросов.

  • true — кэширование включено.
  • false — кэширование отключено.
cash.ajax('/api/items', {
    method: 'GET',
    cache: false
});

Обработка ответа

Метод ajax возвращает промис, который упрощает работу с асинхронными данными:

cash.ajax('/api/items', { method: 'GET', dataType: 'json' })
    .then(data => {
        data.forEach(item => console.log(item.name));
    })
    .catch(err => console.error('Ошибка запроса:', err));

Также можно использовать async/await:

async function fetchItems() {
    try {
        const items = await cash.ajax('/api/items', { dataType: 'json' });
        console.log(items);
    } catch (err) {
        console.error('Ошибка запроса:', err);
    }
}

Особенности и рекомендации

  • Автоматическое определение формата: Если dataType не указан, Cash попытается угадать формат ответа на основе заголовков сервера.
  • Сериализация данных: Объекты JavaScript автоматически конвертируются в строки JSON при отправке в теле запроса.
  • Обработка ошибок: Промис отклоняется не только при сетевых ошибках, но и при ошибочных HTTP-статусах (400–599).
  • Совместимость с fetch: Под капотом Cash использует современный API fetch, что обеспечивает высокую производительность и поддержку промисов.

Метод ajax библиотеки Cash обеспечивает полный контроль над HTTP-запросами и легко интегрируется с современными практиками асинхронного программирования, включая промисы и async/await. Его гибкость позволяет работать с разными форматами данных, настраивать заголовки, таймауты и обработку ошибок, создавая надёжные и масштабируемые клиентские приложения.