我将以下代码放入函数中,当调用该函数时,它会加载我的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”
有谁知道为什么会显示此消息?
答案 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
,我不确定此值,可能你检查一下。