收到此错误“Uncaught TypeError:无法读取属性'documentElement'的null”

时间:2015-04-12 18:08:02

标签: javascript php xml

我正在尝试解析使用php创建的xml文件,如下所示。但是当我尝试使用reponseXML.documentElement解析它的数据时,我在控制台中收到此错误" Uncaught TypeError:无法读取属性' documentElement' of null"这是我的代码。

my javascript code is

function getData()
{
    var xhr = new XMLHttpRequest();
    xhr.open("GET","data.php",true);
    xhr.onreadystatechange = function()
    {
        if(xhr.readyState == 4)
        {
            //alert("got response");
            //alert(xhr.responseText);
            var root = xhr.responseXML.documentElement;
            var children = root.childNodes;
            //alert(children.length);
            for(var i=0;i<children.length;i++)
            {
                if(children[i].nodeType == 1)
                {                   
                    var grandChildren = children[i].childNodes;                     
                    for(var j=0;j<grandChildren.length;j++)
                    {
                        if(grandChildren[j].nodeType == 1)
                        {
                            //alert(grandChildren[j].nodeName);
                        }
                    }
                }
            }           
        }
    }
    xhr.send(null);
}

my xml file is 

<?php  
header("Content-Type: text/xml");
echo '<?xml version="1.0" charset="UTF-8"?>';
$aboutMe = "nothing";
$aboutMyFamily = "the best";
$myStreangths = "trying";
$myWeaknesses = "so many";
$personsILike = "SREAA RAAM,SWAAMEE VIVEKAANAMDHA,maamayya";
$thingsILikeInOthers = "honesty,realization";
$thingsIDoNotLikeInOthers = "jealousy,ego";
$myFriends = "bujji";
echo '<data>';
    echo '<profle>';
        echo "<about>";
            echo "'<aboutMe>'.$aboutMe.'</aboutMe>'";
            echo "'<aboutMyFamily>'.$aboutMyFamily.'<aboutMyFamily/>'";
            echo "'<myStrengths>'.$myStreangths.'</myStrengths>'";
            echo "'<myWeaknesses>'.$myWeaknesses.'</myWeaknesses>'";
            echo "'<personsILike>'.$personsILike.'</personsILike>'";
            echo "'<thingsiLikeInOthers>'.$thingsILikeInOthers.'</thingsiLikeInOthers>'";
            echo "'<thingsIDoNotLikeInOthers>'.$thingsIDoNotLikeInOthers.'</thingsIDoNotLikeInOthers>'";
            echo "'<myFriends>'.$myFriends.'</myFriends>'";
        echo '</about>';        
    echo "</profile>";
echo "</data>";
?>

问题出在哪里???

1 个答案:

答案 0 :(得分:0)

完全没有问题。 nullxhr.resppmseXML的文档和正确值。当 resppmseXML 字段为NULL时, XMLHttpRequest 中有完整的规则集,因此我建议您选择自己选择的javascript参考,以使自己更舒服那个。

但是我可以给出一个提示:这可能是NULL,因为您创建的XML只是无效。当我查看您的PHP代码时,我可以看到您通过#34; hand&#34;来创建XML,即通过连接字符串。这通常是创建non-wellformed XML的原因。

您需要(应该)在之前验证您创建的XML ,并将其发送给浏览器,以确保您在创建XML时没有犯任何错误。我强烈建议使用XML库来创建XML而不是手动创建它。我建议例如在之前的答案中我已经给出了 - 但我现在没有找到它们,所以我引导你去参考一个更广泛的参考问题,但应该给你一些指示: How to generate XML file dynamically using PHP? - 但最后您可以选择创建(和/或验证)XML的XML库。