Вопрос по javascript – try-catch не работает с XMLHTTPRequest

15

Я пытаюсь использоватьtry-catch заявления для обработки ошибок отXMLHTTPRequestкак показано ниже:

<code>var xhr = new XMLHttpRequest();
xhr.open('POST', someurl, true);
try{
    xhr.sendMultipart(object);
}
catch(err){
    error_handle_function();
}
</code>

Когда произошла ошибка 401xhr.sendMultipart,error_handle_function не был назван. Есть идеи как это исправить?

Спасибо!

Ваш Ответ

2   ответа
22

что вы не можете отловить ошибки сервера таким образом. вместо этого вы должны проверить код состояния:

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);
"ГОЛЛИ ЭТО РАБОТАЛО !!"
В строке 3, откуда берется объект xmlhttp?
Chrome по-прежнему выдает ошибку в консоли, а затем вызывает обработчик.
Если вы установитеWeb Server Notifier в Chrome и попробуйте перейти на play.google.com, например, вы увидите обычную ошибку 404, которую я не могу предотвратить даже проверкой кода состояния ранее. Есть идеи, почему?
6

Это не было брошено. Он был возвращен асинхронно.

Это означает, что этот код завершает работу до получения ответа. Это то, чтоtrue в вашемopen вызов средств.

Вам необходимо зарегистрироватьonReadyStateChange обработчик и обработка ошибок там.

Похожие вопросы