我正在尝试使用try-catch
语句处理来自XMLHTTPRequest
的错误,如下所示:
var xhr = new XMLHttpRequest();
xhr.open('POST', someurl, true);
try{
xhr.sendMultipart(object);
}
catch(err){
error_handle_function();
}
xhr.sendMultipart
引发401错误时,未调用error_handle_function
。知道如何解决这个问题吗?
谢谢!
答案 0 :(得分:24)
我认为你无法以这种方式捕获服务器错误。你应该检查状态代码:
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);
答案 1 :(得分:6)
当xhr.sendMultipart抛出401错误
时
没有抛出。它以异步方式返回。
这意味着此代码在响应到达之前完成运行。这就是true
来电中open
的含义。
您需要注册一个onReadyStateChange
处理程序并在那里处理错误响应。