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 错误时

它没有被抛出。它是异步返回的。

这意味着此代码在响应到达之前完成运行。这就是trueopen通话中的意思。

您需要在那里注册一个onReadyStateChange处理程序并处理错误响应。

于 2012-05-05T03:42:07.670 回答