【问题标题】:XMLHttpRequest.open() exception handlingXMLHttpRequest.open() 异常处理
【发布时间】:2012-05-22 17:41:05
【问题描述】:

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

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

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

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

【问题讨论】:

标签: javascript ajax exception-handling xmlhttprequest


【解决方案1】:

您可以通过xhttp.status访问HTTP响应码; 200 (OK) 或 304 (Not 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 在请求挂起时锁定浏览器。 高度建议将其设为异步。

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

【讨论】:

  • 是的,我知道,我使用 var 声明变量并使其同步(出于某种原因),文件很小,因此使其同步不是问题。
  • 但是我真的需要做这个检查,因为没有它,代码运行良好吗?控制台中的错误有什么缺点吗?
  • @gopi1410: 没有任何问题;只要您的应用可以处理它(这似乎可以)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多