2017-04-05 52 views
0

我在index.html中的以下代码抓起字典列表,并打印出键和值到一个表行和列的HTML表(JSON响应)

$(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 ...  ...   ... 

任何想法,我可能是做错了任何帮助,将不胜感激?

回答

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" 
    } 
] 
} 

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

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

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

希望它有某种帮助

+1

更新的小提琴使用JSON和转换为阵列,所以它会为你工作。 –

+1

嗨我更新了小提琴链接修复。谢谢 –

+0

感谢您的更新,但我仍然收到一个错误'未捕获TypeError:无法读取'tableData + ='​​'+ data [j] [i] +''未定义的属性'0'; ' –