2017-04-05 56 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'; ' –