Javascript 此函数在页面加载时运行,但仅出现警报1和2,而不是警报3。阻止执行警报3的错误是什么?

Javascript 此函数在页面加载时运行,但仅出现警报1和2,而不是警报3。阻止执行警报3的错误是什么?,javascript,sql,xml,ajax,web,Javascript,Sql,Xml,Ajax,Web,当页面加载时,这个函数会运行,但只会到达警报2,我怀疑它不会到达警报3,因为前一行var id_array=xmlDoc.getElementsByTagName(“id”)。我已经试着研究getElementsByTagName(),看看我是否正确地使用了它,我仍然感觉自己是正确的 var xmlhttp; xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readySt

当页面加载时,这个函数会运行,但只会到达警报2,我怀疑它不会到达警报3,因为前一行
var id_array=xmlDoc.getElementsByTagName(“id”)。我已经试着研究
getElementsByTagName()
,看看我是否正确地使用了它,我仍然感觉自己是正确的

var xmlhttp;
xmlhttp=new XMLHttpRequest();

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

        var xmlDoc = xmlhttp.responseXML;
    alert("2");
        var id_array = xmlDoc.getElementsByTagName("id");
    alert("3");
    for(id in id_array)
    {
        // do something with the id 
    }
    }
}
xmlhttp.open("POST", "xmlDoc.xml", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(); 
alert("1");
这是它应该从中读取的xml文档的示例。实际文件生成x个“id”,其中包含来自sql数据库的各种信息

<id>
    <name><![CDATA[<?php echo $query_array["name"]; ?>]]></name>
    <latitude><![CDATA[<?php echo $query_array["latitude"]; ?>]]></latitude>
    <longitude><![CDATA[<?php echo $query_array["longitude"]; ?>]]></longitude>
    <color><![CDATA[<?php echo $color_array["color_id"]; ?>]]></color>
    <color_r><![CDATA[<?php echo $color_array["red"]; ?>]]></color_r>
    <color_g><![CDATA[<?php echo $color_array["green"]; ?>]]></color_g>
    <color_b><![CDATA[<?php echo $color_array["blue"]; ?>]]></color_b>
    <text><![CDATA[<?php echo $user_array["comment"]; ?>]]></text>
</id>
<id>
    <name><![CDATA[<?php echo $query_array["name"]; ?>]]></name>
    <latitude><![CDATA[<?php echo $query_array["latitude"]; ?>]]></latitude>
    <longitude><![CDATA[<?php echo $query_array["longitude"]; ?>]]></longitude>
    <color><![CDATA[<?php echo $color_array["color_id"]; ?>]]></color>
    <color_r><![CDATA[<?php echo $color_array["red"]; ?>]]></color_r>
    <color_g><![CDATA[<?php echo $color_array["green"]; ?>]]></color_g>
    <color_b><![CDATA[<?php echo $color_array["blue"]; ?>]]></color_b>
    <text><![CDATA[<?php echo $user_array["comment"]; ?>]]></text>
</id>
<id>
    <name><![CDATA[<?php echo $query_array["name"]; ?>]]></name>
    <latitude><![CDATA[<?php echo $query_array["latitude"]; ?>]]></latitude>
    <longitude><![CDATA[<?php echo $query_array["longitude"]; ?>]]></longitude>
    <color><![CDATA[<?php echo $color_array["color_id"]; ?>]]></color>
    <color_r><![CDATA[<?php echo $color_array["red"]; ?>]]></color_r>
    <color_g><![CDATA[<?php echo $color_array["green"]; ?>]]></color_g>
    <color_b><![CDATA[<?php echo $color_array["blue"]; ?>]]></color_b>
    <text><![CDATA[<?php echo $user_array["comment"]; ?>]]></text>
</id>

]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
因此,我的预期行为是id_数组(在本例中)获得3个单元格(每次出现一个),每个单元格包含标记中的所有数据

但是,我再次怀疑id_数组赋值中的一个bug阻止了任何事情的发生

任何帮助都会很好

xmlhttp.setRequestHeader('Content-Type',  'text/xml');
看看

xmlhttp.responseXML

当尝试执行
时,不会产生
null
导致错误。getElementsByTagName(“id”)

尝试执行控制台。登录
xmlDoc
对象,查看它在控制台中的输出。Javascript控制台中是否有错误?如果没有看到xmlhttp.responseXML,就无法判断。。它确实包含id标记,如。。。对吗?我认为您需要将内容类型设置为“text/xml”,而不是application/x-www-form-urlencoded。我查看了一个错误日志,发现它显示。。。“Uncaught TypeError:Object:……没有方法'getElementsByTagName'”我这样做了,我得到了错误“Uncaught TypeError:无法调用空映射函数的方法'getElementsByTagName'。js,
xmlhttp.responseXML
为您返回
null
——从而返回错误。您正在执行跨域请求吗?看起来是的,但不是,文件都在我的服务器上。抱歉,刚刚与同事通话完毕,正在访问的sql数据库位于不同的服务器上。我添加了一个php请求来访问该数据库,错误消失了。非常感谢。