Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向页面添加DOCTYPE时的xmlhttp状态200消息_Javascript_Xml_Doctype_Xmlhttprequest - Fatal编程技术网

Javascript 向页面添加DOCTYPE时的xmlhttp状态200消息

Javascript 向页面添加DOCTYPE时的xmlhttp状态200消息,javascript,xml,doctype,xmlhttprequest,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

我将以下代码放入函数中,当调用函数时,它将加载我的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">
然而,它仍然像我希望的那样加载我的XML文件

在搜索了它之后,说xmlhttp状态200表示“OK”


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

这可能意味着
xmlhttp.readyState
正在转换为4(“完成”)以外的状态——如果整个页面不立即下载,则可能会发生这种情况,这很可能是错误的。当
xmlhttp.readyState!=4
,而不是将其视为错误条件

您还应该强烈考虑使用JavaScript框架,如jQuery,因为这样可以节省很多不必要的努力。例如,这里的所有代码都可以简化为:

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

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

我不能使用jQuery。我正在使用它,但我的设备太慢,无法加载jQuery js文件,所以我删除了它,现在加载速度很快,但现在我遇到了这个问题。
$.post("myfile.xml", function(data) {
    alert(data);
}).error(function() {
    alert("Panel not communicating.");
});