如何在jquery / javascript中将下表转换为JSON字符串?
<table> <thead> <tr> <th>Column 1</th> <th>Column 2</th> <th>Column 3</th> </tr> </thead> <tbody> <tr> <td>A1</td> <td>A2</td> <td>A3</td> </tr> <tr> <td>B1</td> <td>B2</td> <td>B3</td> </tr> <tr> <td>C1</td> <td>C2</td> <td>C3</td> </tr> </tbody> </table>
我想这样做,以便可以在POST请求或GET请求中使用的变量“ myjson”中获取JSON字符串:
{ "myrows" : [ { "Column 1" : "A1", "Column 2" : "A2", "Column 3" : "A3" }, { "Column 1" : "B1", "Column 2" : "B2", "Column 3" : "B3" }, { "Column 1" : "C1", "Column 2" : "C2", "Column 3" : "C3" } ] }
做到这一点的最佳方法是什么?(注意:行的数量可能有所不同,我只想提取文本,而忽略表格内的其他标签)
更新: 有一个解决方案(下)上的jsfiddle的小幅提升叉。
您只需要遍历表的DOM即可读取它……这 甚至 还 没有接近优化, 但可以为您提供所需的结果。(jsFiddle)
// Loop through grabbing everything var myRows = []; var $headers = $("th"); var $rows = $("tbody tr").each(function(index) { $cells = $(this).find("td"); myRows[index] = {}; $cells.each(function(cellIndex) { myRows[index][$($headers[cellIndex]).html()] = $(this).html(); }); }); // Let's put this in the object like you want and convert to JSON (Note: jQuery will also do this for you on the Ajax request) var myObj = {}; myObj.myrows = myRows; alert(JSON.stringify(myObj));
和输出…
{"myrows":[{"Column 1":"A1","Column 2":"A2","Column 3":"A3"},{"Column 1":"B1","Column 2":"B2","Column 3":"B3"},{"Column 1":"C1","Column 2":"C2","Column 3":"C3"}]}