我想用javascript从XML文件中获取信息,但我有一个错误,我无法解决自己... "无法调用方法' getElementsByTagName' of null"
我认为这是我的XML中的一个问题,但我不知道在哪里
这是我的javascript
var map;
var mod;
var xmlDoc;
var xhr = new XMLHttpRequest();
xhr.overrideMimeType("text/xml");
xhr.open('GET' , 'streamcontrol.xml');
xhr.send();
xhr.onreadystatechange = function(){
xmlDoc = xhr.responseXML;
map = xmlDoc.getElementsByTagName('mapname');
map = xmlDoc.getElementsByTagName('modname');
}
我的Xml
<!DOCTYPE StreamControl>
<items>
<timestamp>1408381485</timestamp>
<mapname>hijacked</mapname>
<modname>retd</modname>
</items>
答案 0 :(得分:2)
在onreadystatechange函数中,您可能应该检查就绪状态:
var map;
var mod;
var xmlDoc;
var xhr = new XMLHttpRequest();
xhr.overrideMimeType("text/xml");
xhr.open('GET' , 'streamcontrol.xml');
xhr.send();
xhr.onreadystatechange = function(){
if (xhr.readyState==4 && xhr.status==200)
{
xmlDoc = xhr.responseXML;
map = xmlDoc.getElementsByTagName('mapname');
map = xmlDoc.getElementsByTagName('modname');
}
}
readyState保存XMLHttpRequest的状态:
当一切正常时,0:请求未初始化
1:建立服务器连接
2:收到请求
3:处理请求
4:请求已完成且响应已准备好
状态为200,找不到404 ......
答案 1 :(得分:0)
感谢您对节点文档的评论,如果可以帮助任何人,我发布我的脚本:
function loadXMLDoc(filename)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else // code for IE5 and IE6
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
xmlDoc=loadXMLDoc('streamcontrol.xml');
map_node=xmlDoc.getElementsByTagName('mapname')[0].childNodes[0];
map = map_node.nodeValue;