try-catch не работает с XMLHTTPRequest
Я пытаюсь использовать try-catch операторы для обработки ошибок из XMLHTTPRequest, как показано ниже:
var xhr = new XMLHttpRequest();
xhr.open('POST', someurl, true);
try{
xhr.sendMultipart(object);
}
catch(err){
error_handle_function();
}
когда была ошибка 401, вызванная xhr.sendMultipart на error_handle_function не называлась. Есть идеи, как это исправить?
спасибо!
2 ответов
Я думаю, что вы не можете поймать ошибки сервера таким образом. вместо этого вы должны проверить код состояния:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function() {
if (xhr.readyState === 4){ //if complete
if(xhr.status === 200){ //check if "OK" (200)
//success
} else {
error_handle_function(); //otherwise, some other code was returned
}
}
}
xhr.open('POST', someurl, true);
xhr.sendMultipart(object);
когда была ошибка 401, вызванная xhr.sendMultipart
Он не был брошен. Он был возвращен асинхронно.
это означает, что этот код завершает работу до получения ответа. Вот что такое true в своем open звонок.
вам необходимо зарегистрировать onReadyStateChange обработчик и обработка ответов об ошибках.