【问题标题】:JSON to HTML Table conversionJSON 到 HTML 表格的转换
【发布时间】:2015-06-25 21:10:51
【问题描述】:

我想以表格形式将我从服务器获得的 JSON 数据显示到我的 HTML 页面。我创建了一个 js 函数来执行此操作:

function saveImage(){

  var xmlhttp;
  if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp = new XMLHttpRequest();
  }
  else {// code for IE6, IE5
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

  xmlhttp.onreadystatechange = function () {
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
          // Optionally, here you can update the dom to have a table in "responseDiv"
       //  document.getElementById("myDiv").innerHTML = "<pre>" + xmlhttp.responseText + "</pre>";
            var items= document.getElementById("myDiv").innerHTML;
          var test = items.xmlhttp.responseText

          $table = "<table id = 'resultTable'><td>Digits</td><td>Probability</td><tr>";

            for (var i = 0; i < test.length; i++) {

                $table += "<tr>";

                var it = test[i];

                $table += "<td>" + test[i].Digits + "</td>";

                $table += "<td>" + test[i].Probability + "</td>";


                 //alert(items[i].duration);
                $table += "</tr>";

            }

            $table += "</table>";

            $('myDiv').append($table);
            $table = "<table id = 'resultTable'><td>Digits</td><td>Probability</td><tr>";
      }
  }
  xmlhttp.open("POST", "analyzeImage", true);
  // Convert the canvas data to a data-uri encoded PNG image
  var dataURIPostBody = canvas.toDataURL("image/png");
//  window.open(dataURIPostBody, '_blank', 'location=0, menubar=0');
  xmlhttp.send(dataURIPostBody);
}

我的 HTML 代码是:

<div class="col-md-3" id="myDiv">
    <h4>Confusion Matrix</h4>
    <div class="table-responsive" style="width: 250px;">
    </div>
  </div>

但是我的 HTML 页面上没有显示任何内容。任何帮助将非常感激。谢谢。

【问题讨论】:

    标签: javascript html json html-table


    【解决方案1】:

    &lt;tr&gt;标签在for循环外和for循环内打开,只关闭一次,这是错误的。看看

    【讨论】:

      【解决方案2】:

      你的 xmlhttp.responseText 还是文本格式,你需要使用 json2.js 等 JSON 包将其解析为 json 对象,所以获取 json2.js 并在你的 html 代码中引用它,然后你就可以调用 JSON。 parse(xmlhttp.respoonseText) 将您的响应文本转换为 json 数组。我还改变了你构建表格的方式,我没有测试你的代码,但我在多个地方使用它并且它有效。

      <script type="text/javascript" src="json2.js"></script>
      
      
      xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
              try
              {
                 var test = JSON.parse(xmlhttp.responseText);
      
                 var table      = $("#resultTable").get(0);
                var row = table.insertRow();
                var cell1 = row.insertCell();
                var cell2 = row.insertCell();
                cell1.innerHTML = "Digits";
                cell2.innerHTML = "Probability";
      
                  for (var i = 0; i < test.length; i++) {
      
                      row = table.insertRow();
                      cell1 = row.insertCell();
                      cell2 = row.insertCell();
                      cell1.innerHTML = test[i].Digits;
                      cell2.innerHTML = test[i].Probability;
                  }
              }
              catch(ex)
              {
                alert(ex.message+": Error parsing server response, "+xmlhttp.responseText);
              }
      
            }
        }
      

      在 html 代码的 div 部分添加一个表格,以便在构建表格内容时在 js 代码中引用它,

      <div class="col-md-3" id="myDiv">
              <h4>Confusion Matrix</h4>
              <div class="table-responsive" style="width: 250px;">
               <table id='resultTable'>
               </table>
              </div>
            </div>
      

      【讨论】:

      • 嗨@falijbour,我试过这段代码,但它无法得到结果。它只显示标题:数字概率。
      • 我基于我的答案假设 responseText 包含一个 json 对象数组,这告诉我 test 不是一个数组,打印出您的 xmlhttp.responseText 或显示假设从服务器显示的内容
      • 添加了 try catch 语句来查看 JSON.parse 是否由于不正确的 json 对象而引发异常
      • 我在解析服务器响应时出错:无法读取未定义的属性“insertRow”:解析服务器响应时出错,{“1”:0.99,“2”:0.8,“3”:0.6 }
      • 警告框“解析服务器响应错误”旁边的内容是什么,应该是服务器发送的文本内容。你知道服务器会发送什么。如果是这样,请将其添加到您的问题中
      猜你喜欢
      • 2015-09-02
      • 2013-07-02
      • 2020-05-09
      • 2019-06-13
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多