XMLHttpRequest.open()异常处理

gop*_*410 5 javascript ajax exception-handling xmlhttprequest

我有以下代码(仅相关部分):

xhttp=new XMLHttpRequest();
xhttp.open("GET",doc_name,false);
xhttp.send();
xmlDoc=xhttp.responseXML;
if(xmlDoc==null)
{
   xmlDoc=loadXMLDoc(defaultXml);
}
Run Code Online (Sandbox Code Playgroud)

如果指定的文件不存在,则在加载默认的xml文件时运行正常,但如果文件不存在,则仅在控制台中显示404错误.(此错误不会反映除控制台之外的页面中的任何位置).

我的问题是我应该如何检查这个异常?是否有必要添加一段额外的代码来检查代码在没有它的情况下运行时是否存在?

Mat*_*att 6

您可以通过访问 HTTP 响应代码xhttp.status;无论是200(OK)或304(未修改)通常被认为成功的请求。

xhttp=new XMLHttpRequest();
xhttp.open("GET",doc_name,false);
xhttp.send();

if (xhttp.status === 200 || xhttp.status === 304) {
    xmlDoc=xhttp.responseXML;
    if(xmlDoc==null)
    {
       xmlDoc=loadXMLDoc(defaultXml);
    }
}
Run Code Online (Sandbox Code Playgroud)

确保首先使用 声明变量var,否则您将拥有隐式全局变量,这很糟糕。

还要确保您有充分的理由同步执行此操作;同步 XHR 在请求未决时锁定浏览器。强烈建议将其设为异步。

对于您问题的第二部分,没有任何问题;只要您的应用程序可以处理异常。(这似乎是)