1

[编辑] 完整且正确的代码 @ https://repl.it/@aleemont/XMLPerson

我需要阅读 JSON 文件并将它包含的所有信息放在一个表中。我正在尝试使用 XMLHttpRequest 这样做。我的老师给了我一个例子,但我无法正确理解。这是我写的代码:

var ppl = new Array();

function load(){
    var xmlhttp = new XMLHttpRequest();
    var url = "data.txt";

    xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readyState == 4){
            if(xmlhttp.status == 200){
                ppl = JSON.parse(xmlhttp.responseText);
                print();
            }
            else
                document.getElementById("error").innerHTML = "ERROR";
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}

function print(){
    /*here is where i should create the table
     where to put the content of data.txt*/
}




这是我老师给我的代码,但我不明白这些方法是做什么的。它还使用不同的 JSON 文件,但我猜这没关系。

function print(){
    var ncol=0;
    for (key in pc)
      ncol++;
    var tit = document.getElementsByTagName("title");
    var txt = tit[0].childNodes[0];
    var tab = document.getElementById("computer");
    tab.innerHTML="";
    var table = document.createElement("TABLE");

    var title = document.createElement("TR");
    var ele = document.createElement("TH");
    ele.colSpan = ncol;
    ele.appendChild(txt);    
    title.appendChild(ele);
    table.appendChild(title);

    var heading = document.createElement("TR");
    for (var x in pc[0])
    {
        txt = document.createTextNode(x);
        ele = document.createElement("TH");
        ele.appendChild(txt);
        heading.appendChild(ele);
    }
    table.appendChild(heading);
    for (var i in pc)
      {
          var row = document.createElement("TR");
      for (var x in pc[i])
      {
          if (x=="Storage")
               txt = document.createTextNode(storage[pc[i][x]]);
               else
                   txt = document.createTextNode(pc[i][x]);
               ele = document.createElement("TD");
        ele.appendChild(txt);
        riga.appendChild(ele);
      }
      table.appendChild(riga);
      }
      tab.appendChild(table);
  }
4

1 回答 1

1

ppl = JSON.parse(xmlhttp.statusText);

您需要将响应文本解析为 JSON。改为使用ppl = JSON.parse(xmlhttp.responseText);。您发布的repl中也一样。

于 2020-05-28T12:08:43.213 回答