Доброе утро. Что должно произойти, чтобы сработал onerror xhr? Сервер иногда возвращает json данные с кодом 500, и согласно логике в этом случае должно произойти onerror, но происходит onload.
var requestError = function () {
console.log("error", this);
};
var xhr = new XMLHttpRequest();
xhr.open("POST", 'https://core.lotus-app.ru/1/' + method, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.responseType = "json";
xhr.onload = success;
xhr.onerror = requestError;
xhr.timeout = timeout;
xhr.vars = vars;
xhr.send(paramToURL(params));
согласно логике в этом случае должно произойти onerror
Нет, не должно.
onerror срабатывает при возникновении ошибок сетевого уровня.
Т.е. если запрос вообще не вернулся или отклонен согласно кроссдоменным ограничениям.
Если http запрос вообще вернулся, даже и с кодом ошибки, то onerror не сработает.
Надо использовать onreadystatechange и проверять там код завершения запроса.
Еще лучше сразу взять какую-то обертку для работы с сетью на уровне которой эта тонкость, а также множество тонкостей с которыми Вы еще не столкнулись, разрешены за вас. Будь то fetch-polyfill, axios или даже $.ajax в случае если у вас jQuery все равное есть.
Продвижение своими сайтами как стратегия роста и независимости