【问题标题】:getting this error "Uncaught TypeError: Cannot read property 'documentElement' of null"收到此错误“未捕获的 TypeError:无法读取属性 'documentElement' of null”
【发布时间】:2015-06-18 00:30:53
【问题描述】:

我正在尝试解析使用 php 创建的 xml 文件,如下所示。但是当我尝试使用 reponseXML.documentElement 解析它的数据时,我在控制台中收到此错误“Uncaught TypeError: Cannot read property '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>";
?>

问题出在哪里???

【问题讨论】:

  • 复制在哪里
  • 当然问题可能相同,情况可能相同。但是这个问题没有解决方案吗?
  • 抱歉,我可能太快将其标记为重复。你能发布xhr.responseText的输出吗?
  • xhr.reposntText 是工作文件。它将 xml 文件显示为文本格式

标签: javascript php xml


【解决方案1】:

完全没有问题。 nullxhr.resppmseXML 的记录正确值。当 resppmseXML 字段为 NULL 时,XMLHttpRequest 中有一个完整的规则集,所以我建议您使用您选择的 javascript 参考以使自己更适应.

但是我可以给出一个提示:这可以为 NULL,因为您创建的 XML 只是无效的。当我查看您的 PHP 代码时,我可以看到您正在通过“手工”创建 XML,即通过连接字符串。这通常是创建non-wellformed XML 的原因。

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

【讨论】:

    猜你喜欢
    • 2015-02-13
    • 2016-11-30
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2016-01-03
    • 2021-09-08
    相关资源
    最近更新 更多