【问题标题】:XML Parser doesn't seem to work in my javascriptXML Parser 在我的 javascript 中似乎不起作用
【发布时间】:2014-05-26 06:15:03
【问题描述】:

我正在尝试从 JavaScript 文件中读取我的 XML 文件。

XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<pct>
    <occ>
        <morphology>A</morphology>
        <morphology>B</morphology>
        <morphology>C</morphology>
    <morphology>D</morphology>
    </occ>
    <life>
        <morphology>X</morphology>
        <morphology>Y</morphology>
        <morphology>Z</morphology>
    </life>
</pct>

这里是 Javascript 代码 sn-p:

function loadDynamic(){
xmlDoc = loadXMLDoc("data.xml");
    ......
}

function loadXMLDoc(filename){
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET",filename,true);
xmlhttp.send();
return xmlhttp.responseXML;
}

现在我知道我的 loadXMLDoc 函数正在工作,因为当我检查 Chrome 控制台时,我在 xmlhttp.responseXML 中看到了我的 XML 文档。但我的 xmlDoc 始终为空。

我不知道我哪里出错了,任何帮助将不胜感激!

谢谢!!

【问题讨论】:

  • 等一下 - 这样你就可以在 responseXML 中看到它,但是当它返回到 xmlDoc 时它是空的?
  • 是的。这就是正在发生的事情
  • 即使我传递的是文本文件而不是 xml,也会发生同样的事情

标签: javascript xml parsing


【解决方案1】:

我怀疑当你检查它时,你给了调用时间来完成,但是当你的程序刚刚运行时,它会在调用完成之前返回 responseXML(所以它仍然是 null)。

您可以通过关闭异步请求来防止这种情况 - 基本上,只需将您的 true 更改为 false:

xmlhttp.open("GET",filename,false);

【讨论】:

  • 太棒了!那行得通!我已经做了好几个小时了!万分感谢! :D
  • 使 ajax 请求同步是非常糟糕的做法,因为我违背了 AJAX 使 UI 冻结的目的。
  • 确实,但这就是问题所在。
猜你喜欢
  • 2020-06-28
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 2018-06-07
  • 1970-01-01
相关资源
最近更新 更多