0

我将以下代码放入函数中,当调用该函数时,它会加载我的 XML 文件并将其显示在消息框中:

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

  xmlhttp.onreadystatechange=function()
   {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
     alert(xmlhttp.responseText);

     } else
     {
     alert('Panel not communicating.Reason: '+xmlhttp.status);
     }
   }

xmlhttp.open("POST","myfile.xml",false);
xmlhttp.send();

上面的代码完成了所有事情。

但是,只要我将以下代码添加到页面顶部:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

当我加载我的函数时,它会出现以下消息:

Panel not communicating.Reason: 200

但是它仍然像我想要的那样加载我的 XML 文件。

搜索后说 xmlhttp status 200 表示“OK”

有谁知道它为什么显示此消息?

4

2 回答 2

1

这可能意味着xmlhttp.readyState正在转换到 4 以外的状态(“完成”)——如果整个页面没有立即下载,这可能会发生,这很可能。您的函数可能应该在 时立即返回xmlhttp.readyState != 4,而不是将其视为错误条件。

您还应该强烈考虑在此处使用 jQuery 等 Javascript 框架,因为它会为您节省大量不必要的工作。例如,您在这里获得的所有代码都可以简化为:

$.post("myfile.xml", function(data) {
    alert(data);
}).error(function() {
    alert("Panel not communicating.");
});
于 2012-09-28T02:21:11.960 回答
0

我认为您添加的代码不应该出现在 XML 中,它是用于 HTML 的,所以浏览器可能无法解析文件,这使得xmlhttp.readyState==2,我不确定这个值,请您检查一下。

于 2012-09-28T02:21:23.070 回答