#javascript #jquery
Доброе утро. Что должно произойти, чтобы сработал 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));
Ответы
Ответ 1
согласно логике в этом случае должно произойти onerror Нет, не должно. onerror срабатывает при возникновении ошибок сетевого уровня. Т.е. если запрос вообще не вернулся или отклонен согласно кроссдоменным ограничениям. Если http запрос вообще вернулся, даже и с кодом ошибки, то onerror не сработает. Надо использовать onreadystatechange и проверять там код завершения запроса. Еще лучше сразу взять какую-то обертку для работы с сетью на уровне которой эта тонкость, а также множество тонкостей с которыми Вы еще не столкнулись, разрешены за вас. Будь то fetch-polyfill, axios или даже $.ajax в случае если у вас jQuery все равное есть.
Комментариев нет:
Отправить комментарий