Метод getJSON

Метод getJSON является специализированным инструментом для упрощённого выполнения AJAX-запросов с ожидаемым форматом ответа JSON. Он обеспечивает быструю загрузку данных с сервера и автоматическое преобразование ответа в JavaScript-объект. В Zepto getJSON строится поверх метода $.ajax, предоставляя более лаконичный синтаксис для работы с JSON.


Синтаксис

$.getJSON(url [, data] [, success])

Параметры:

  • url (String) — адрес сервера, к которому отправляется запрос.
  • data (Object | String) — объект или строка с параметрами запроса, которые будут сериализованы и добавлены к URL. Необязательный параметр.
  • success (Function) — функция обратного вызова, выполняющаяся после успешного получения данных. Принимает один аргумент — распарсенный JSON-объект.

Основные особенности

  1. Автоматическая десериализация JSON Ответ сервера автоматически преобразуется в объект JavaScript. Нет необходимости вызывать JSON.parse.

  2. Поддержка GET-запросов getJSON всегда использует метод GET. Для POST-запросов используется метод $.post или $.ajax с указанием type: 'POST'.

  3. Лаконичный синтаксис Позволяет сокращать код по сравнению с использованием полной формы $.ajax.


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

Базовый пример:

$.getJSON('/api/users', function(data) {
    console.log(data);
});

В этом случае отправляется GET-запрос на /api/users. Ответ автоматически преобразуется в объект и передаётся в функцию data.

С передачей параметров:

$.getJSON('/api/users', { page: 2, limit: 10 }, function(data) {
    console.log(data);
});

Здесь объект { page: 2, limit: 10 } сериализуется в строку запроса: /api/users?page=2&limit=10.

Обработка ошибок через fail:

$.getJSON('/api/users')
    .done(function(data) {
        console.log('Данные получены', data);
    })
    .fail(function(jqxhr, textStatus, error) {
        console.error('Ошибка: ', textStatus, error);
    });

Метод возвращает объект jqXHR, что позволяет использовать цепочку .done(), .fail() и .always() для обработки результата и ошибок.


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

  • Ответ сервера должен иметь корректный Content-Type: application/json. Если сервер возвращает текст, не являющийся JSON, произойдёт ошибка парсинга.
  • Параметры запроса сериализуются автоматически, но вложенные объекты преобразуются в строки, что следует учитывать при сложных структурах данных.

Отличия от $.ajax

  • getJSON ограничен GET-запросами и автоматическим разбором JSON.
  • $.ajax предоставляет полный контроль: выбор метода (GET, POST), настройку заголовков, таймаутов и обработки ошибок.
  • getJSON используется для быстрого получения JSON-данных, когда не требуется сложная конфигурация запроса.

Практические советы

  • Для динамических URL с переменными удобно использовать шаблонные строки:
const userId = 42;
$.getJSON(`/api/users/${userId}`, function(user) {
    console.log(user.name);
});
  • Для фильтрации данных на стороне сервера параметры передаются объектом, что упрощает поддержку API:
$.getJSON('/api/products', { category: 'books', sort: 'price' })
    .done(function(products) {
        products.forEach(p => console.log(p.title, p.price));
    });
  • Для последовательной загрузки данных можно комбинировать $.getJSON с цепочкой done и then:
$.getJSON('/api/users')
    .then(users => $.getJSON('/api/details', { ids: users.map(u => u.id) }))
    .then(details => console.log(details));

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