23

以下のように、try-catchステートメントを使用してからのエラーを処理しようとしています。XMLHTTPRequest

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

によってスローされた401エラーがあった場合xhr.sendMultiparterror_handle_functionは呼び出されませんでした。これを修正する方法はありますか?

ありがとう!

4

2 に答える 2

33

そのようにサーバーエラーをキャッチすることはできないと思います。代わりにステータスコードを確認する必要があります。

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);
于 2012-05-05T03:43:59.320 に答える
6

xhr.sendMultipartによってスローされた401エラーがあったとき

投げられませんでした。非同期で返されました。

これは、応答が到着する前にこのコードの実行が終了することを意味します。それtrueがあなたのopen電話の意味です。

onReadyStateChangeハンドラーを登録し、そこでエラー応答を処理する必要があります。

于 2012-05-05T03:42:07.670 に答える