ncaught TypeError:无法读取null的属性'getElementsByTagName'

时间:2019-08-07 07:00:48

标签: javascript

我已经写了几行有效的ajax代码,但是它也提供了以下错误。

  

未捕获的TypeError:无法读取的属性'getElementsByTagName'   空值       在XMLHttpRequest.request.onreadystatechange

问题是此错误向我显示2次,并且第一次状态= 2是第二次状态= 3。

代码:

function ajax_XML(){
        var request;
        if(window.XMLHttpRequest){
            request = new XMLHttpRequest();
        }else{
            request = new ActiveXObject('Microsoft.XMLHTTP');
        }
        request.open('GET','ajax.xml');
        request.onreadystatechange = function(){

            if(request.readyState === 4 && request.status === 200){
                var items = request.responseXML.getElementsByTagName('Name');

                var output = "<ul>";

                for(var i = 0;i<items.length;i++){
                    output+="<li>" + items[i].firstChild.nodeValue + "</li>"
                }
                output+="</ul>";
                document.getElementById('ajax_xml').innerHTML=output;
            }else{
                console.log('error');
            }
        }
        request.send();
    }

This is the link to the ajax file that is attached to the question.

1 个答案:

答案 0 :(得分:0)

我找到了显示错误的原因,我曾经使用完全相同的代码,但是没有显示任何错误,因为没有代码显示错误,但是在上面的代码中ELSE指示了错误,实际上所有编写的代码他们有此错误,因为大多数XML标记在HTML中不存在,这就是导致此错误的原因。 不应编写代码来指示错误

function ajax_XML(){
        var request;
        if(window.XMLHttpRequest){
            request = new XMLHttpRequest();
        }else{
            request = new ActiveXObject('Microsoft.XMLHTTP');
        }
        request.open('GET','ajax.xml');
        request.onreadystatechange = function(){

            if(request.readyState === 4 && request.status === 200){
                var items = request.responseXML.getElementsByTagName('Name');

                var output = "<ul>";

                for(var i = 0;i<items.length;i++){
                    output+="<li>" + items[i].firstChild.nodeValue + "</li>"
                }
                output+="</ul>";
                document.getElementById('ajax_xml').innerHTML=output;
            }
        }
        request.send();
    }