Ajax API (описание точек входа)


СОДЕРЖАНИЕ
  1. Вступление
  2. Пакеты
  3. Заявки
  4. Справочники
  5. Входные формы (включая документы)

Вступление

Ответы на Ajax-запросы отличаются от обычных HTML-страниц тем, что возвращают структуры данных в JSON-формате (хотя можно передавать и обычный HTML и XML-формат). В «Турпутевке» практикуется только JSON-формат ответов, как наиболее читабельный и экономный по объему. JSON-строка является сериализованным JavaScript-объектом.

Спецификация:
Для того, чтобы получить именно Ajax-ответ, необходимо в GET или POST-запросе указать параметр is_ajax=1. Кроме этого, URL запроса должен совпадать с известной платформе точкой входа для Ajax-запросов, а также содержать необходимые для этой точки входа параметры. Описание точек входа с параметрами в разбивке по сущностям дано ниже.
Если использовать функционал скриптов, идущих в комплекте с платформой «Турпутевка», код запроса в теле Javascript будет выглядеть так (пример):

Ajax.doGet('/Voucher/entrypoint',[['param1','value1'],['param2','value2'],['array_param3',['value3_1','value3_2',...,'value3_N']]],CallbackFunctionName); function CallbackFunctionName(j){ var r = json_parse(j); if(!r) return false; for ( var i=0; i<r.variants.length; i++ ) { ... some code ... } }
Здесь указывать параметр is_ajax в запросе не нужно, он добавляется автоматически функцией Ajax.doGet. Если нет параметров запроса, кроме URL и функции обработки ответа, укажите вместо параметров пустой массив (Ajax.doPost(URL,[],CallBack)).

Если сервер вернул ошибку, то текст ответа будет являться просто строкой, а не JSON-объектом. Строка ошибки всегда начинается с символов "ERR: ". При получении ошибки функция, указанная в качестве callback-параметра, не будет вызвана, вместо этого будет показан alert с текстом ошибки. В будущем необходимо позволить все же вызвать функцию, хотя бы без параметров, чтобы javascript-код смог выполнить какие-либо блокирующие действия в случае получения ошибки, например, указанием дополнительного ключа, принуждающего это сделать.

Для передачи POST-запросов серверу существуют функции Ajax.doPost и Ajax.doDataPost. Различаются они тем, что Ajax.doDataPost принудительно кодирует значения переменных в Base64 (это стандартный подход браузера при отправке форм типа enctype="multipart/form-data". Используйте эту функцию, если в значениях переменных могут попадаться знаки плюса (+) - разбирающий скрипт на сервере при получении GET или обычного POST-запроса заменяет плюсы пробелами (особенности кодирования URL).

Кроме обычных параметров, являющихся чаще всего фильтрами для поиска строк с заранее известными значениями (аналог SQL-запроса where param='value'), существуют специальные параметры, влияющие на результат другими методами, а также модификаторы. Ниже дано перечисление таких параметров и описание их возможных значений:

Пакеты

Точки входа Ajax для работы с пакетами:

  1. /Voucher/packets/ID/get/param - поиск параметров в пакетах.
    В качестве ID указывается номер пакета. Если ID=0, тогда будут обрабатываться все имеющиеся пакеты. Также их перечень можно ограничить переменной selectid (см ниже).
    ВНИМАНИЕ: из результатов поиска исключаются пакеты, которые не готовы к использованию (см. первую вкладку настройки турпакета)
    Переменные запроса:
    Пример возвращаемой структуры:
    { "variants":[ // В случае поиска по опциям или продуктам пакета: { "11": { // ID объекта (опции или продукта) "pid":"13", // ID пакета, к которому принадлежит объект "param1" : "value1", "param2" : "value2" } }, // В случае поиска по главным параметрам самого пакета: } "pid":"13", // ID пакета "param1" : "value1", "param2" : "value2" } ], "packets":{ "13": { // ID пакета "desc": "Описание пакета", "name": "Наименование пакета" } } }
  2. /Voucher/packets/ID/get/list - поиск перечня пакетов.
    Здесь ID в URL расценивается как ID шаблона поиска пакетов (не ID пакета!). Если ID=0, будут найдены все пакеты в системе, иначе будут найдены все пакеты, использующие шаблон с этим ID в качестве формы поиска пакетов.
    Переменные запроса: не требуются
    Пример возвращаемой структуры:
    { "variants":[ { "id": "15", // ID пакета "pstatus": 0, // Код состояния пакета. Если более нуля - не готов к продаже пакетов "name": "Турция", "description": "Сезон 2012" "changed": "2012-03-16 22:11:11", "created": "2012-03-16 21:11:11", } ] }
  3. /Voucher/packets/ID/get/columns - перечень столбцов какого-либо справочника, включая столбцы всех связанных справочников.
    ID здесь не играет значения. Переменные запроса:
    Пример возвращаемой структуры:
    { "variants":[ { "id": "field1", // ID поля "description": "Поле номер 1", // Понятное имя поля }, { "id": "cost", "description": "Цена", }, { "id": "price", "description": "", } ], "dictid":"room_costs" }

Заявки

Справочники

Входные формы (включая документы)


<< Оглавление | Наверх…