Полный список Ajax-методов

Модуль zepto.ajax реализует упрощённый набор методов для отправки HTTP-запросов, загрузки данных и сериализации форм. Интерфейс во многом совместим с jQuery, однако размер и внутренние алгоритмы оптимизированы под мобильные браузеры и современный JavaScript.

Важно помнить о подключении дополнительного файла zepto.ajax.js и при необходимости zepto.form.js и zepto.callbacks.js. Без них часть методов будет недоступна.


Базовый метод $.ajax

$.ajax(options) обеспечивает низкоуровневый доступ к Ajax-функционалу. Основные параметры:

  • url: адрес запроса.
  • type: HTTP-метод (по умолчанию GET).
  • data: объект или строка данных.
  • dataType: ожидаемый тип ответа (json, xml, html, text).
  • contentType: MIME-тип тела запроса.
  • timeout: время ожидания в миллисекундах.
  • headers: дополнительные заголовки.
  • success, error, complete: колбэки обработки результата.

Особенность: в Zepto отсутствует поддержка ряда «устаревших» опций jQuery — например, jsonpCallback реализована, но с другим внутренним механизмом и менее формальной валидацией.

Пример типового вызова:

$.ajax({
  url: '/api/users',
  type: 'POST',
  data: {name: 'Ivan'},
  dataType: 'json',
  success: function(resp) {
    console.log(resp);
  },
  error: function(xhr, status, err) {
    console.error(status, err);
  }
});

Упрощённые методы $.get и $.post

Zepto предоставляет упрощённые обёртки над $.ajax:

  • $.get(url, [data], [success], [dataType])
  • $.post(url, [data], [success], [dataType])

Основное назначение — краткая запись для запросов без детальной конфигурации.

$.get('/status.json', function(data){
  console.log(data.ok);
});

Метод $.getJSON

$.getJSON(url, [data], [success]) возвращает JSON-ответ. В отличие от jQuery, внутри отсутствует сложная обработка ошибок формата JSON, метод предполагает корректность ответа.

$.getJSON('/profile', {id: 42}, function(user){
  console.log(user.name);
});

JSONP-запросы: $.ajaxJSONP

Специальный метод для запросов JSONP — $.ajaxJSONP(options). Вызов создаёт <script> с присвоенным callback-параметром. Параметры:

  • url: обязательный.
  • jsonp: имя параметра callback.
  • success: обработчик.
  • error: обработчик.

JSONP не поддерживает таймауты на уровне XHR, поэтому Zepto реализует их вручную.

$.ajaxJSONP({
  url: 'https://example.com/data?callback=?',
  success: function(data){ console.log(data); }
});

Метод $.ajaxSettings

Глобальные настройки по умолчанию определяются в $.ajaxSettings. Изменение значений влияет на все будущие вызовы $.ajax.

Доступные параметры:

  • type: метод запроса (GET).
  • timeout: глобальный таймаут.
  • contentType: MIME-тип по умолчанию.
  • processData: необходимость сериализации объектов в строки.

Используется для централизации конфигурации и унификации поведения в разных частях приложения.


Обработка событий: ajaxStart, ajaxStop, ajaxSend, ajaxSuccess, ajaxError, ajaxComplete

Zepto реализует часть событий, совместимых с jQuery:

  • ajaxStart: первый активный запрос.
  • ajaxStop: завершение последнего активного запроса.
  • ajaxSend: перед отправкой запроса.
  • ajaxSuccess: успешный ответ.
  • ajaxError: ошибка запроса.
  • ajaxComplete: завершение запроса независимо от результата.

Эти события позволяют организовать логирование, обработку индикаторов загрузки или глобальные interceptor-механизмы.


Метод $.param

$.param(obj) сериализует объект в URL-строку. Поддерживает вложенные структуры в стиле PHP-массивов (a[b]=1), если они явно переданы в data.

$.param({a: 1, b: 2});
// "a=1&b=2"

Методы загрузки HTML: load

$(selector).load(url, [data], [success]) загружает HTML-фрагмент и вставляет его в DOM выбранного элемента. Поддерживается выборка части ответа через пробел:

$('#box').load('/page.html #content');

Этот способ используется для частичной подгрузки страниц и компонентов.


Работа с формами: serialize и serializeArray

Модуль zepto.form добавляет два метода:

  • serialize(): строковая сериализация.
  • serializeArray(): массив объектов {name, value}.

Оба соответствуют поведению jQuery и применяются для подготовки данных перед $.ajax или $.post.

$('form').serializeArray();
// [{name:"email", value:"a@b.c"}]

Особенности реализации и ограничения

1. Без поддержки старых IE. Модуль ориентируется на современные браузеры, поэтому отсутствует множество совместимых веток и полифиллов.

2. Упрощённая модель ошибок. Ошибки трактуются в основном по статусу HTTP или по срабатыванию таймаута; отсутствует глубокая проверка типов.

3. JSONP работает через встроенный callback без избыточных обработчиков.

4. Нет поддержки abort() для всех случаев. Прерывание запроса возможно для XHR, но менее формализовано, чем в jQuery.


Взаимодействие с промисами

В последних версиях модуль возвращает объект, имитирующий минимальный интерфейс then(success, error). Это не полноценный Promise/A+, но позволяет связать цепочки:

$.get('/api').then(function(d){ console.log(d); });

Асинхронные паттерны

Модуль гармонирует с «легковесными» архитектурами: через события, глобальные настройки, события DOM и минимальные интерфейсы колбэков. Отсутствие лишних абстракций ускоряет выполнение и облегчает отладку.


Практические применения

  • частичная подгрузка интерфейсов;
  • загрузка JSON-данных для клиентской логики;
  • взаимодействие с REST-endpoint-ами;
  • обработка форм без перезагрузки;
  • интеграция с мобильными web-view.

Сравнение с jQuery-Ajax

Возможность Zepto jQuery
JSONP Да Да
Events Ajax Частично Полностью
Deferred/Promise Упрощённо Полно
Формы Да (через модуль) Да
Abort Частично Полно
Кросс-браузерность Современные браузеры Шире

Итоговое место Ajax-модуля в экосистеме Zepto

Ajax-методы занимают важную позицию в архитектуре Zepto: они обеспечивают асинхронную интеграцию, дополняют компактную DOM-модель и соответствуют общей идее минимализма. Благодаря малому размеру и достаточному покрытию сценариев модуль остаётся востребованным в мобильных интерфейсах и SPA-подходах, где важны скорость загрузки и простота использования.