Универсальный метод ajax

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


Синтаксис метода

$.ajax({
    url: '',           // URL для запроса
    type: 'GET',       // Метод HTTP: GET, POST, PUT, DELETE и т.д.
    data: {},          // Данные, отправляемые на сервер
    dataType: '',      // Тип ожидаемых данных: 'json', 'text', 'html', 'script', 'xml'
    headers: {},       // Дополнительные заголовки запроса
    timeout: 0,        // Время ожидания в миллисекундах
    async: true,       // Асинхронность запроса
    cache: true,       // Кеширование GET-запроса
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8', // Тип содержимого для POST-запроса
    beforeSend: null,  // Функция, вызываемая перед отправкой запроса
    success: null,     // Функция, вызываемая при успешном завершении
    error: null,       // Функция, вызываемая при ошибке
    complete: null     // Функция, вызываемая после завершения запроса (успех или ошибка)
});

Основные параметры

url Адрес ресурса, к которому выполняется запрос. Может быть как абсолютным, так и относительным.

type Метод HTTP-запроса. Наиболее часто используются:

  • 'GET' — получение данных;
  • 'POST' — отправка данных;
  • 'PUT' и 'DELETE' — редактирование и удаление данных на сервере (реже встречаются в веб-клиенте).

data Объект данных, который отправляется на сервер. Zepto автоматически сериализует объект в строку query-параметров для GET-запросов или в тело запроса для POST.

dataType Определяет формат данных, которые ожидаются от сервера:

  • 'json' — JSON-объект;
  • 'text' — обычный текст;
  • 'html' — HTML-код;
  • 'script' — JavaScript-код, который будет выполнен;
  • 'xml' — XML-документ.

headers Позволяет задавать дополнительные HTTP-заголовки для запроса. Например, 'Authorization': 'Bearer token'.

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

async Определяет, будет ли запрос асинхронным (true) или синхронным (false). Рекомендуется всегда использовать асинхронные запросы.

cache Для GET-запросов управление кешированием. Если false, Zepto автоматически добавит уникальный параметр _ в URL для предотвращения кеширования.

contentType Указывает тип данных, отправляемых на сервер в теле запроса (для POST и PUT). По умолчанию 'application/x-www-form-urlencoded'.


Обработчики событий

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

success(data, status, xhr) Вызывается при успешном завершении запроса. Параметры:

  • data — ответ сервера;
  • status — строка состояния ('success');
  • xhr — объект XMLHttpRequest.

error(xhr, status, error) Срабатывает при ошибке запроса. Параметры:

  • xhr — объект запроса;
  • status — код ошибки ('timeout', 'error', 'abort', 'parsererror');
  • error — текст ошибки.

complete(xhr, status) Вызывается после завершения запроса в любом случае. Используется для скрытия индикаторов загрузки или других действий, которые должны выполняться всегда.


Примеры использования

GET-запрос с параметрами

$.ajax({
    url: '/api/users',
    type: 'GET',
    data: { page: 2, limit: 10 },
    dataType: 'json',
    success: function(response) {
        console.log('Пользователи:', response);
    },
    error: function(xhr, status, error) {
        console.error('Ошибка запроса:', error);
    }
});

POST-запрос с отправкой JSON

$.ajax({
    url: '/api/users',
    type: 'POST',
    data: JSON.stringify({ name: 'Иван', age: 25 }),
    dataType: 'json',
    contentType: 'application/json; charset=UTF-8',
    success: function(response) {
        console.log('Создан пользователь:', response);
    },
    error: function(xhr, status, error) {
        console.error('Ошибка создания:', error);
    }
});

Использование beforeSend и complete

$.ajax({
    url: '/api/data',
    type: 'GET',
    beforeSend: function() {
        $('#loader').show();
    },
    complete: function() {
        $('#loader').hide();
    },
    success: function(data) {
        console.log('Данные получены:', data);
    },
    error: function() {
        console.error('Не удалось получить данные');
    }
});

Особенности и полезные моменты

  1. Автоматическая сериализация данных Zepto автоматически преобразует объект data в строку параметров для GET-запросов и в тело запроса для POST.

  2. Поддержка кросс-доменных запросов Для кросс-доменных GET-запросов Zepto может использовать JSONP, если указать dataType: 'jsonp'.

  3. Минимализм и совместимость с jQuery Метод $.ajax в Zepto сохраняет совместимость с большинством паттернов jQuery, но работает быстрее и легче благодаря небольшой массе библиотеки.

  4. Обработка кеширования Для GET-запросов можно легко отключить кеширование, используя cache: false.

  5. Асинхронность и управление временем ожидания timeout позволяет контролировать длительные запросы, предотвращая “подвисание” интерфейса.


Метод $.ajax является ключевым инструментом для работы с серверными данными в Zepto, объединяя гибкость настройки, обработку всех этапов запроса и минимализм кода. Он обеспечивает полноценный контроль над сетью в клиентских приложениях, сохраняя простоту и лаконичность синтаксиса.