getElementsByTagName()[0]未定义

时间:2012-06-18 12:30:39

标签: javascript ajax

我第一次尝试使用某些AJAX,并且遇到了错误。我见过一些有类似问题的人,但在看完它们之后,我仍然无法弄清楚我的代码有什么问题。

我遇到的问题是rf.getElementsByTagName("motd")[0]即将出现未定义。

以下是代码:

function refresh() {
    var url = document.getElementById("url");
    var req;
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    req.onreadystatechange=function() {
        if (req.readyState==4 && req.status==200) {
            var rf;
            if (window.DOMParser) {
                parser = new DOMParser();
                rf=parser.parseFromString(req,"text/xml");
            } else {
                rf = new ActiveXObject("Microsoft.XMLDOM");
                rf.async = false;
                rf.loadXML(req); 
            }
            document.getElementById("result").innerHTML="<div id=\"success\">"+
            rf.getElementsByTagName("motd")[0]+"&nbsp;";
        } else {
            document.getElementById("result").innerHTML="<div id=\"working\">Checking...</div>";
        }
    }
    req.open("POST","g2mc_status.php",true);
    req.send("server="+url);
}

我正在尝试处理的XML(现在所有.php文件都设置为输出):

<minecraft server="mc.nrd.li" port="25565">
    <motd>NerdConglomerate</motd>
    <players>
        <online>0</online>
        <maximum>20</maximum>
    </players>
</minecraft>

1 个答案:

答案 0 :(得分:2)

您正在将req而不是req.responseTextreq.responseXML传递给XML解析器。

否则可以正常工作:http://jsfiddle.net/cLGGZ/