将特定的XML内容加载到HTML

时间:2010-09-15 19:14:58

标签: javascript html xml

我正在尝试将特定内容从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

非常感谢任何帮助。

2 个答案:

答案 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,并且服务器没有时间处理请求并做出响应。