AJAX-запросы

Введение

В данной статье изучим, какие возможности работы с AJAX встроено API карт 2ГИС.

Основы

Операции с AJAX в общем случае можно выполнять с помощью фреймворка jQuery или других.

Но в ряде случаев можно обойтись без них. В этом нам поможет свойство карты myMap.ajax, которое хранит экземпляр класса DG.MapAjaxManager. Вручную создавать объект класса DG.MapAjaxManager не нужно.

В качестве формата мы используем JSONP. Благодаря этому можно делать кросс-доменные AJAX-запросы, но с ограничением — только GET-запросы.

Также есть методы для групповых операций с AJAX-запросами.

Класс DG.MapAjaxManager

Ниже мы подробно рассмотрим все методы класса DG.MapAjaxManager. Для наглядности допустим, что myMap — объект карты.

Описание методов представляет собой действие (что делает метод, для чего он нужен?) и название метода. Вместе с тем, представлены дополнительно параметры, возвращаемое значение метода и особенности, если таковые имеются.

Методы

Отправить AJAX-запрос
myMap.ajax.get(options)

Параметры:

Имя Тип Обязательный Описание
options.url String Да URL, на который будет выполняться AJAX-запрос. Сервер должен поддерживать JSONP-протокол.
options.data Object Нет Данные, которые нужно передать.
options.success Function Нет Функция-обработчик, вызываемая при успешном выполнении запроса. Функция принимает один параметр — ответ сервера.
options.failture Function Нет Функция-обработчик, вызываемая в случае ошибки. Функция принимает один параметр — ответ сервера.
options.scope Object Нет Контекст выполнения callback-функций options.success и options.failture. Другими словами, что будет скрываться за ключевым словом this внутри callback-функций.

Возвращает:

Тип Описание
String Уникальный идентификатор AJAX-запроса, который автоматически создается в процессе выполнения данного метода.

Пример запроса на сторонний сервис:

// Инициализация карты
var myMap = new DG.Map('map1');
myMap.setCenter(new DG.GeoPoint(82.927810142519, 55.028936234826), 15);

// Отправка асинхронного запроса на сторонний сервис
var cid1 = myMap.ajax.get({
url: 'http://www.geonames.org/postalCodeLookupJSON?callback=$[callback]',
data: {
postalcode: 10504,
country: 'US'
},
success: function (response){
var postalCode = response.postalcodes[0];
alert('Почтовый индекс: ' + postalCode.postalcode + ', широта/долгота: ' + postalCode.lng + '/' + postalCode.lat);
},
failture: function (){
alert('При отправке запроса возникла ошибка!');
},
scope: this
});
Добавить AJAX-запрос в группу
myMap.ajax.addCallbackToGroup(cid, gid)

Параметры:

Имя Тип Обязательный Описание
cid String Да Идентификатор AJAX-запроса, который был получен в процессе выполнения метода myMap.ajax.get.
gid String Да Идентификатор группы. Если для указанной группы вызываем данный метод первый раз, создается группа с указанным идентификатором gid. В неё добавляется cid. При последующих вызовах идентификаторы AJAX-запросов просто добавляются в указанную группу.

Пример:

myMap.ajax.addCallbackToGroup(cid1, 'myGroup1'); // Где cid1 - идентификатор AJAX-запроса
Отключить обработчик определенного AJAX-запроса
myMap.ajax.cancelCallback(cid)

Параметры:

Имя Тип Обязательный Описание
cid String Да Идентификатор AJAX-запроса.

Пример:

myMap.ajax.cancelCallback(cid1); // Где cid1 - идентификатор AJAX-запрос

Вызов данного метода приводит к тому, что success и failture обработчики не будут вызваны после завершения заданного AJAX-запроса.

Отменить всех обработчиков группы AJAX-запросов
myMap.ajax.cancelCallbacksByGroup(gid)

Параметры:

Имя Тип Обязательный Описание
gid String Да Идентификатор группы.

Пример:

myMap.ajax.cancelCallbacksByGroup('myGroup1');

Вызов данного метода приводит к тому, что success и failture обработчики не будут вызваны после завершения всех AJAX-запросов из указанной группы.

Отмена всех обработчиков карты
myMap.ajax.cancelAllCallbacks()

Пример:

myMap.ajax.cancelAllCallbacks();

Вызов данного метода приводит к тому, что success и failture обработчики не будут вызваны после завершения всех AJAX-запросов на карте.