/**
* Обмен данными с сервером
*/
var Transport = Object.extend({
//data: null,
/**
* Отправка запроса на сервер
*
* @param {Object} params Объект с параметрами, который содержит возможные
* свойства
* * {String} section Раздел, в котором должен отработать метод на сервере
* * {String} class Название объекта, в котором содержится метод
* * {String} method Метод/событие, которое необходимо вызвать на сервере
* * {Object} [parameters] Параметры для передачи на сервер
* * {function} [onSuccess] Обработчик, который должен быть вызван
* после получения ответа с сервера
* * {function} [skipErrors] Массив кодов ошибок, которые надо пропустить
* (с которыми допускается вызвать обработчик)
*
* @example
* irisControllers.classes.dc_Account_Link = IrisCardController.extend({
* onAfterSave: function (p_rec_id, p_mode) {
* // После сохранения добавляем ссылку к связанной компании,
* // если такая связь отсутствует
* Transport.request({
* section: 'Account',
* 'class': 'dc_Account_Link',
* method: 'checkReverseLink',
* parameters: {
* id: p_rec_id
* }
* });
* }
* });
*/
request: function(params) {
if (params.section == undefined ||
params['class'] == undefined ||
params.method == undefined) {
return;
}
// Формируем параметры для передачи на сервер
var parameters = {
irisConfigSection: params.section,
irisConfigClass: params['class'],
irisConfigMethod: params.method
};
if (params.parameters !== undefined) {
for (key in params.parameters) {
parameters['param_'+key] = Object.toJSON(params.parameters[key]);
}
}
// Передаём данные на сервер
new Ajax.Request(g_path + '/core/engine/router.php', {
parameters: parameters,
onSuccess: function(response) {
if (response.readyState == 4) {
var result = response.responseText.evalJSON();
if ('error' in result) {
if ((result.error.code == undefined) ||
(params.skipErrors == undefined) ||
(params.skipErrors.indexOf(result.error.code) == -1)) {
// TODO: Стилизация
alert(result.error.message);
return;
}
}
// Если ошибок не возникло или ошибка пропускается, то вызовим колбек
if (params.onSuccess !== undefined) {
params.onSuccess(response);
}
}
}
});
}
});