无法使用HTML + JavaScript将.xml文件加载到.php文件中

时间:2018-09-30 22:18:45

标签: javascript html xml

我不需要任何幻想。我正在加载一个问答页面。我要在单独的文件上进行问答,因此我可以更新文件,下次有人加载该文件时,它将更新页面。

我创建了一个文件“ faq.xml”,并试图将其加载到我的faq.php文件中。

<p id="xmlp" class="content" style="text-align: center">
    <!-- XML should go here -->
</p>
<script>
    function loadXMLDoc() {
        var xmlhttp = new XMLHttpRequest();
        myFunction(this);

        xmlhttp.open("GET", "faq.xml", true);
        xmlhttp.send();
    }

    function myFunction(xml) {
        var x, i, xmlDoc, table;
        xmlDoc = xml.responseXML;
        table = "<tr><th>Question</th><th>Answer</th></tr>";
        x = xmlDoc.getElementsByTagName("faqs")
        for (i = 0; i < x.length; i++) {
            table += "<tr><td>" +
                    x[i].getElementsByTagName("question")[0].childNodes[0].nodeValue +
                    "</td><td>" +
                    x[i].getElementsByTagName("answer")[0].childNodes[0].nodeValue +
                    "</td></tr>";
        }
        document.getElementById("xmlp").innerHTML = table;
    }
</script>

无论出于何种原因,它均未加载任何内容。 XML文件当前具有此文件...

<?xml version="1.0" encoding="UTF-8"?>
<faqs>
    <question>When do you fly?</question>
    <answer>We fly at sunrise weather permitting.  Flights are more peaceful and the winds are great.  We even fly low enough to have a conversation with those less fortunate on the ground.  People tend to hang around at launch and landings to see what it’s all about.</answer>
</faqs>

有什么建议吗?我是XML的新手(这是我的第一个)。

谢谢你。


我发出了警报,以确保js入门并能正常工作。

<script>
    loadXMLDoc();
    function loadXMLDoc() {
        var xmlhttp = new XMLHttpRequest();
        alert();
        myFunction(this);

        xmlhttp.open("GET", "faq.xml", true);
        xmlhttp.send();
    }

仍然不确定阻止的位置。


我做了更多的测试,我认为我至少发现了哪里有问题...

<p id="xmlp" class="content" style="text-align: center">
    <!-- XML should go here -->
</p>
<script>
    function loadXMLDoc() {
        var xmlhttp = new XMLHttpRequest();
        myFunction(this);

        xmlhttp.open("GET", "faq.xml", true);
        xmlhttp.send();
    }

    function myFunction(xml) {
        var x, i, xmlDoc, table;
        xmlDoc = xml.responseXML;
        table = "<tr><th>Question</th><th>Answer</th></tr>";
alert("This one works");
        x = xmlDoc.getElementsByTagName("faqs")
alert("This one does not work");
        for (i = 0; i < x.length; i++) {
            table += "<tr><td>" +
                    x[i].getElementsByTagName("question")[0].childNodes[0].nodeValue +
                    "</td><td>" +
                    x[i].getElementsByTagName("answer")[0].childNodes[0].nodeValue +
                    "</td></tr>";
        }
        document.getElementById("xmlp").innerHTML = table;
    }
</script>

1 个答案:

答案 0 :(得分:0)

这是从https://www.w3schools.com/js/tryit.asp?filename=tryjs_ajax_xml通过AJAX加载xml文件的基本示例:

<body onLoad="loadXMLDocument('someXMLfile.xml')">

<p>
   <b>Status:</b> <span id="statusInfo"></span>
</p>
<p>
   <b>Status text:</b><span id="statusTextInfo"></span>
</p>
<p>
   <b>Response:</b> <span id="xmlContent"></span>
</p>



<script>
function loadXMLDocument(url) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById('statusText').innerHTML = this.status;
      document.getElementById('statusTextInfo').innerHTML = this.statusText;
      document.getElementById('xmlContent').innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", url, true);
  xhttp.send();
}
</script>

</body>

这会将XML文件加载到Javascript中。 尽管正如我所提到的,但是如果您一次接触AJAX,PHP和XML 直接的方法可能是对PHP进行AJAX调用,并使用服务器上的php函数处理xml。

4/200状态代码使AJAX调试更加容易。