我正在尝试将特定内容从XML加载到HTML div。我正在使用带参数的函数来执行此操作。
这是我对功能的呼唤:
loadDoc("news.xml","destak-article","article");
这应该发送xml文件的请求,获取«article»标签的内容并将其放在«destak-article»div上。
这是我的函数体:
function loadDoc(url,id,tagname){ if (window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5 } xmlhttp.open("GET",url,false); xmlhttp.send(); xmlDoc = xmlhttp.responseXML; document.getElementById(id).innerHTML = xmlDoc.getElementsByTagName(tagname)[0].childNodes[0].nodeValue; }
但这似乎不起作用。 在Chrome js控制台上,我收到此错误:
Cannot call method 'getElementsByTagName' of null在Firebug上我得到:
xmlDoc.getElementsByTagName(tagname)[0] is undefined
非常感谢任何帮助。
答案 0 :(得分:1)
您是否验证了服务器响应?在代码中使用一些错误检查。例如:
if (xmlhttp.status == 200) {
document.getElementById(id).innerHTML = xmlDoc.getElementsByTagName(tagname)[0].childNodes[0].nodeValue;
}
else {
alert('error');
}
答案 1 :(得分:0)
您需要注册一个处理函数,该函数将在请求完成后调用。您可以看到example of how to do that here.
在您的情况下发生的情况是,您在发送请求后立即尝试获取xmlDoc
,并且服务器没有时间处理请求并做出响应。