var Sender = (function () { var module = {}; /** * Выполнить POST запрос * @param {Function} callback Функция обработчик результата запроса * @param {String} uri Ресурс запроса * @param {Object} params Параметры, передаваемые на сервер * @param {Object} callbackParams Параметры, которые необходимо передать в функцию callback * @param {Boolean} isAsinc Использовать ли асинхронный запрос (по умолчанию true) */ module.Go = function (callback, uri, params, callbackParams, isAsinc = true) { if (uri == null || typeof uri != "string") { console.warn("URI не был передан"); return; } if (params == null || typeof params != "object") { params = {}; } var xhr = new XMLHttpRequest(); // * Обработка результата запроса xhr.onload = function (event) { var data; try { data = JSON.parse(this.response); } catch (error) { Notify.Show(error); data = null; } finally { if (typeof callback == "function") { var nerror = data || data.Error || data.Error === null || data.Error === "null"; if (nerror) { callback(data, callbackParams); } else { Notify.Show("Произошла ошибка в процессе выполнения запроса"); } } } }; xhr.onabort = function (event) { Notify.Show("Выполнение запроса было прервано..."); }; xhr.onerror = function (event) { Notify.Show("Выполнение запроса завершилось неудачей. Перезагрузите страницу и повторите попытку. Если проблема сохраняется, пожалуйста, сообщите об этом администратору admin@ktk-45.ru"); }; xhr.ontimeout = function (event) { Notify.Show("Время ожидания запроса истекло... Проверьте соединение с интернетом"); }; xhr.open("POST", uri, isAsinc); xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8"); xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); xhr.send(JSON.stringify(params)); }; return module; })();