onerror event xhr js

257
01 августа 2017, 18:56

Доброе утро. Что должно произойти, чтобы сработал 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));

Answer 1
согласно логике в этом случае должно произойти onerror

Нет, не должно. onerror срабатывает при возникновении ошибок сетевого уровня.
Т.е. если запрос вообще не вернулся или отклонен согласно кроссдоменным ограничениям.

Если http запрос вообще вернулся, даже и с кодом ошибки, то onerror не сработает.

Надо использовать onreadystatechange и проверять там код завершения запроса.

Еще лучше сразу взять какую-то обертку для работы с сетью на уровне которой эта тонкость, а также множество тонкостей с которыми Вы еще не столкнулись, разрешены за вас. Будь то fetch-polyfill, axios или даже $.ajax в случае если у вас jQuery все равное есть.

READ ALSO
Не выполняется gulpfile.babel.js

Не выполняется gulpfile.babel.js

Но получаю такой ответ:

222
Почему вместо PUT запроса отправляется OPTIONS?

Почему вместо PUT запроса отправляется OPTIONS?

У меня сначало было такая же ошибка с методом post, но я исправил таким образом

270
Ajax запрос зависает

Ajax запрос зависает

У меня есть форма регистрации, после ее заполнения и отправки начинает грузится ajax, то есть он заполняет бд, регестрируется, но ajax это не показывает,...

221
наличие класса в файле php

наличие класса в файле php

Как проверить существует ли класс в файле?

317