将DOCTYPE添加到页面时,xmlhttp status 200消息

时间:2012-09-28 02:12:05

标签: javascript xml doctype xmlhttprequest

我将以下代码放入函数中,当调用该函数时,它会加载我的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状态200表示“OK”

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

2 个答案:

答案 0 :(得分:1)

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

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

$.post("myfile.xml", function(data) {
    alert(data);
}).error(function() {
    alert("Panel not communicating.");
});

答案 1 :(得分:0)

我认为您添加的代码不应该出现在XML中,而是出现在HTML中,因此浏览器可能无法解析文件,导致xmlhttp.readyState==2,我不确定此值,可能你检查一下。