3

我正在为这个问题寻找一些好的解决方案?

我只想将所有表数据提交到控制器中。行是动态创建的,而且它没有任何元素。这里对于处理整个表数据处理有点困惑。

<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>
  1. 如何将表格值发布到控制器中?
  2. 如何获取控制器内部的值?
4

2 回答 2

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>
于 2013-11-06T04:33:24.740 回答
1

我知道这是一个较老的问题,但我也遇到过类似的情况,并且提出了一些不同的做法。我希望这对其他人有帮助。

我让 javascript 解析<table>for<tr>元素,然后创建一个存储在隐藏<input>字段中的 JSON 字符串。

这是改编自另一个 Stack Overflow 帖子:post data from table row like json format

基本代码如下。

完整的@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);
于 2014-05-02T20:04:16.273 回答