【问题标题】:Rows and Columns HTML TABLE (JSON RESPONSE)行和列 HTML 表(JSON 响应)
【发布时间】:2017-08-31 16:08:57
【问题描述】:

我在 index.html 中有以下代码,它获取字典列表并将键和值打印到表中

$(function() {
  $('a#search').bind('click', function() {
    $.getJSON('/_search', {
      a: $('input[name="a"]').val()
    }, function(data) {
      var tableData = '<table>'
      $.each(data.result, function(key, value){
        tableData += '<tr><td>' + '   ' + key + '   ' + '</td>';
        alert(key)
        $.each(value, function(val){
            alert(value[val])
            tableData += '<td>' + value[val] + '</td>';
          });
        tableData += '</tr>';
      });
      tableData += '</table>';
      $('#table').html(tableData);
    });

它抓取的是来自 search.py​​ 的字典列表

result = defaultdict(list)
return jsonify(result=result)

结果包含以下内容

defaultdict(<class 'list'>, {'Developer': ['Office Koukan', 'Jorudan', 'Beam Software'], 'Publisher': ['Shouei', 'VAP', 'Hi Tech Expressions'], 'ReleaseDate': ['March 18, 1994', 'November 18, 1994', 'October 1, 1993'], 'Title': ['Idea no Hi', 'Pachinko Hi Hisshouhou', 'hunThe Hunt for Red October']})

但是我的输出如下

Developer Publisher ReleaseDate Title
Office    Koukan    Jorudan Beam Software
Shouei    VAP       Hi Tech Expressions
March 18, 1994  November 18, 1994   October 1, 1993
Idea no Hi  Pachinko Hi Hisshouhou  hunThe Hunt for Red October

什么时候应该输出

Developer      Publisher ReleaseDate Title
Office         Shouei    ...         ...
Koukan         VAP       ...         ...
Jorudan        ...       ...         ...
Beam Software  ...       ...         ...

知道我可能做错了什么吗?任何帮助将不胜感激?

【问题讨论】:

    标签: python html dictionary html-table


    【解决方案1】:

    由于 JSON 的格式化方式,您需要使用多个循环。如果您可以控制这种格式,则循环会更简单,如果格式如下:-

    {
      "objects" : [
      {
        "Developer": "Office Koukan",
        "Publisher": "Shouei",
        "ReleaseDate": "March 18, 1994",
        "Title": "Idea no Hi"
      },
      {
        "Developer": "Jorudan",
        "Publisher": "VAP",
        "ReleaseDate": "November 18, 1994",
        "Title": "Pachinko Hi Hisshouhou"
      },
      {
        "Developer": "Beam Software",
        "Publisher": "Hi Tech Expressions",
        "ReleaseDate": "October 1, 1993",
        "Title": "hunThe Hunt for Red October"
      }
    ]
    }
    

    这将为您提供更自然的循环,因为您可以循环遍历每个对象,而不是多次循环返回每个字段分组。

    如果不能改格式,看这个jsfiddlehttp://jsfiddle.net/8TT4p/3538/

    我创建了一个 JS 数组来匹配您的数据。我循环了一次以获取表格标题行设置。然后有一个三重嵌套循环为每条记录创建一行,然后为该行/列提取正确的数据。

    希望对你有所帮助

    【讨论】:

    • 更新了 fiddle 以使用 JSON 并转换为 Array,因此它适用于您。
    • 感谢您的更新,但我仍然收到错误 Uncaught TypeError: Cannot read property '0' of undefined tableData += '&lt;td&gt;'+data[j][i]+'&lt;/td&gt;';
    • 问题是我必须将您的数据部分更改为 data.result 才能获取实际数据
    • 非常感谢您迄今为止的所有帮助
    • 我打印了列和行,结果正确
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    相关资源
    最近更新 更多