5

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

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

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

我的问题是我应该如何检查这个异常&当代码运行时是否有必要添加一段额外的代码来检查文件是否存在?

4

1 回答 1

6

您可以通过以下方式访问 HTTP 响应代码xhttp.status200(OK) 或( 304Not Modified) 通常被认为是成功的请求。

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);
    }
}

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

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

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

于 2012-05-15T08:31:55.213 回答