Javascript 此函数在页面加载时运行,但仅出现警报1和2,而不是警报3。阻止执行警报3的错误是什么?
当页面加载时,这个函数会运行,但只会到达警报2,我怀疑它不会到达警报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
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请求来访问该数据库,错误消失了。非常感谢。