我正在为这个问题寻找一些好的解决方案?
我只想将所有表格数据提交到控制器中。行是动态创建的,也没有任何元素。这里对于处理整个表数据处理几乎没有什么困惑。
<form action="controller.htm" method="post">
<table>
<tr>
<td>one</td>
<td><two/td>
<td>three</td>
<td>four</td>
<td>five</td>
</tr>
<td>data11</td>
<td>data4</td>
<td>data5</td>
<td>data6</td>
<td>data 7</td>
</tr>
</table>
</form>
答案 0 :(得分:4)
我几乎找不到处理表数据的方法。即使我们没有任何输入类型的html元素,使用表单将大量数据集合发送到控制器可能不是一个好方法。
步骤1:使用Java脚本迭代每个单元格,读取所有表格数据 第2步:通过指定列计数器将单元格元素添加到数组中 第3步完成每一行后,将数组添加到jsonobject中 第4步:一旦迭代完成stringfy json对象并使用Ajax将Json字符串传递给控制器。
<script type="text/javascript">
function GetCellValues(dataTable)
{
var jsonObj = [];
var jsonString;
var table = document.getElementById(dataTable);
for (var r = 0, n = table.rows.length; r < n; r++) {
var item = {};
for (var c = 0, m = table.rows[r].cells.length; c < m; c++){
if(c == 1){
item ["data1"] =table.rows[r].cells[c].innerHTML;}
else if(c==2){
item ["data2"] =table.rows[r].cells[c].innerHTML;}
else if(c==3){
item ["data3"] =table.rows[r].cells[c].innerHTML;}
else if(c==4){
item ["data4"] = table.rows[r].cells[c].innerHTML;}
else if(c==5){
item ["data5"] =table.rows[r].cells[c].innerHTML;}
}
jsonObj.push(item);
}
jsonString = JSON.stringify(jsonObj);
alert("Save your data "+ jsonString);
$.ajax({
type: "POST",
url : "tableData.htm?jsonData="+jsonString,
success: function(data){
$("#").html(data);
},
error:function(data){
console.log("failure"+data);
alert("failure"+data);
}
});
}
</script>
答案 1 :(得分:1)
我知道这是一个较旧的问题,但我遇到了类似的情况,并且提出了这个问题。我希望这有助于其他人。
我让javascript解析<table>
<tr>
元素,然后创建一个存储在隐藏<input>
字段中的JSON字符串。
这是根据另一个Stack Overflow帖子改编的:post data from table row like json format
基本代码如下。
Full @ JSFiddle:http://jsfiddle.net/leisenstein/vy3ux/
// object to hold your data
function dataRow(value1,value2,value3) {
this.dxCode = value1;
this.dxDate = value2;
this.dxType = value3;
}
// create array to hold your data
var dataArray = new Array();
// Start from 2 if you need to skip a header row
for(var i = 2; i <= $("table tr").length; i++){
// create object and push to array
dataArray.push(
new dataRow(
$("table tr:nth-child(" + i + ") td").eq(0).html(),
$("table tr:nth-child(" + i + ") td").eq(1).html(),
$("table tr:nth-child(" + i + ") td").eq(2).html())
);
}
var sJson = JSON.stringify(dataArray);