无法使用javascript解析xml DOM(来自文件)

时间:2011-07-22 23:48:52

标签: javascript html xml dom xhtml

当我尝试将元素标记从单独的xml文件加载到html文档中时,我最近开始遇到javascript问题。我知道我已经正确启用了XMLHttpRequest或activeX(取决于互联网浏览器),但是我在获取xml文件并打开它以访问它的标签时遇到了问题。为了打开文件,我尝试使用:

xhttp.open("GET",filepath,false);
xhttp.send();
xmlDoc=xhttp.responseXML;

代码似乎超过第一行,但它在第二行被绊倒。我想知道是否有人能够澄清.send()的功能,以及服务器权限是否可能出错;当这段代码运行时,IE 7/8告诉我“访问被拒绝”。

1 个答案:

答案 0 :(得分:2)

确保从访问的资源向同一域发送ajax请求。

在此处获取您的代码示例

xhttp.open("GET",filepath,false);
xhttp.send();

您已使用HTTP方法GET请求了资源。只有在根据规范[1]在XHR对象上调用send()方法时才会触发此请求。如果方法是GET,则忽略send()的参数。

现在一旦创建了xhr对象,它就会经历不同的状态[2],例如

  • UNSENT(数值0)
  • 已打开(数值1)
  • HEADERS_RECEIVED(数值2)
  • LOADING(数值3)
  • 完成(数值4)

请求被触发的那一刻(即调用send()),xhr对象的状态为OPENED。

现在,如果我们查看代码的第3行“xmlDoc = xhttp.responseXML;”,则很难确定您尝试阅读内容的状态。读取内容的最佳方式是状态达到4或DONE

只需修改您的代码,如下所示:

 var xhr = new XMLHttpRequest();
    xhr.open("GET", somefilepath, true);
    xhr.send();
    xhr.onreadystatechange = function() {
     if(this.readyState == 4) {
      xmlDoc=xhr.responseXML;
     }
   }