Rol*_*ndo 14 javascript jquery json
如何将下表变成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>
Run Code Online (Sandbox Code Playgroud)
我想这样做,我可以在变量"myjson"中获得一个可以在POST请求或GET请求中使用的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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
完成此任务的最佳方法是什么?(注意:可能存在不同数量的行,我只想提取文本而忽略表中的其他标记)
sco*_*kel 25
更新:在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));?
Run Code Online (Sandbox Code Playgroud)
而输出......
{"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"}]}
Run Code Online (Sandbox Code Playgroud)
Bas*_*asj 10
这是一个没有 jQuery 的解决方案,受到这篇文章的启发:
function tableToJson(table) {
var data = [];
for (var i = 1; i < table.rows.length; i++) {
var tableRow = table.rows[i];
var rowData = [];
for (var j = 0; j < tableRow.cells.length; j++) {
rowData.push(tableRow.cells[j].innerHTML);
}
data.push(rowData);
}
return data;
}
Run Code Online (Sandbox Code Playgroud)
除了能够忽略列、覆盖值和不被嵌套表混淆之外,我需要同样的东西。我最终编写了一个 jQuery 插件 table-to-json:
https://github.com/lightswitch05/table-to-json
您所要做的就是使用 jQuery 选择您的表并调用插件:
var table = $('#example-table').tableToJSON();
Run Code Online (Sandbox Code Playgroud)
这是它的实际演示:
| 归档时间: |
|
| 查看次数: |
52612 次 |
| 最近记录: |