加载XML文档onclick

时间:2015-04-07 03:14:30

标签: javascript xml

我正在尝试编写此代码,因此当我单击XML按钮时,它将显示我的XML文档。我无法让按钮做任何事情,我假设功能缺少某些东西。任何帮助,将不胜感激。提前谢谢。

功能

<script language = "JavaScript">
  xmlOpen = function(){
    if (window.XMLHttpRequest){
      xmlhttp=new XMLHttpRequest();
    }
    xmlhttp.open("GET","gameXML.xml",false);
    xmlhttp.send();
    xmlDoc = xmlhttp.responseXML;
  }
</script>

按钮HTML

<p>
  <label>List of users:</label>
  <input type="button" value="XML" id="users" onclick="xmlOpen()">
</p>

2 个答案:

答案 0 :(得分:1)

你忘了显示数据吗?如果是这样,请将其添加到您的函数中:

document.getElementById('users').innerHTML = xmlDoc;

如果这不起作用,请将responseXML更改为responseText。

如果不起作用,请尝试替换

xmlhttp.open("GET","gameXML.xml",false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;

 xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("users").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","gameXML.xml",true);
xmlhttp.send();

答案 1 :(得分:1)

您是从Web服务器提供这些文件吗?或者您只是从文件系统打开HTML页面?如果您使用Chrome并尝试从文件系统中打开HTML文件,则在单击&#34; XML&#34;时会出现错误(请参阅控制台)。按钮。

要解决此问题,您可以从Web服务器(甚至在本地计算机上)提供文件,也可以尝试在Firefox中打开HTML页面。

在显示XML文件的内容方面,请尝试查看以下问题:How do I loop through XML Nodes in JavaScript?

<强>更新

我使用下面的代码测试成功了。在Firefox中打开我的桌面中的HTML文件

<强> gameXML.xml

<?xml version="1.0" encoding="UTF-8" ?>
<users>
    <user>Bob</user>
    <user>James</user>
    <user>Karen</user>
    <user>Tom</user>
    <user>Linda</user>
</users>

<强>的test.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset=utf-8>
        <title>Test Page</title>
    </head>
    <body>

    <p>
      <label>List of users:</label>
      <input type="button" value="XML" id="users" onclick="xmlOpen()">
      <table id="tbody"></table>
    </p>

    <script language = "JavaScript">
      xmlOpen = function(){
        var users, i, len;

        if (window.XMLHttpRequest){
          xmlhttp=new XMLHttpRequest();
        }

        xmlhttp.open("GET", "gameXML.xml", false);
        xmlhttp.send();
        xmlDoc = xmlhttp.responseXML;

        users = xmlDoc.getElementsByTagName("user");

        len = users.length;
        for (i = 0; i < len; i++) {   
            var user = users[i].firstChild.nodeValue;
            var tr = document.createElement("tr");
            var td = document.createElement("td");
            var textNode = document.createTextNode(user);
            td.appendChild(textNode);        
            tr.appendChild(td);        
            document.getElementById("tbody").appendChild(tr);
        } 
      }
    </script>

    </body>
</html>

结果截图:

Screenshot of result