Javascript 如何在Spring框架中处理表数据表单提交?
我正在寻找解决这个问题的好办法 我只想将所有表数据提交到控制器中。行是动态创建的,而且它没有任何元素。对于处理整个表的数据处理,这里有点混乱Javascript 如何在Spring框架中处理表数据表单提交?,javascript,jquery,html,spring-data,Javascript,Jquery,Html,Spring Data,我正在寻找解决这个问题的好办法 我只想将所有表数据提交到控制器中。行是动态创建的,而且它没有任何元素。对于处理整个表的数据处理,这里有点混乱 <form action="controller.htm" method="post"> <table> <tr> <td>one</td> <td><two/td> <td>three</td> <td>four</td>
<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>
一
三
四
五
数据11
数据4
数据5
数据6
数据7
我几乎找不到处理表数据的方法。即使我们没有任何输入类型的html元素,使用表单将大量数据集合发布到控制器中也可能不是一个好方法 步骤1:通过使用Java脚本迭代每个单元格来读取所有表数据。
步骤2:通过指定列计数器将单元格元素添加到数组中。
步骤3完成每一行后,将数组添加到jsonobject中。
步骤4:迭代完成后,将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>
函数GetCellValues(数据表)
{
var jsonObj=[];
var-jsonString;
var table=document.getElementById(数据表);
for(var r=0,n=table.rows.length;r
我知道这是一个较老的问题,但我也遇到过类似的情况,所以我的做法略有不同。我希望这对其他人有帮助
我让javascript解析
元素的
,然后创建一个JSON字符串,存储在一个隐藏的
字段中
这是根据另一个堆栈溢出帖子改编的:
基本代码如下
完整@JSFiddle:
//用于保存数据的对象
函数数据行(值1、值2、值3){
this.dxCode=value1;
this.dxDate=value2;
this.dxType=value3;
}
//创建数组以保存数据
var dataArray=新数组();
//如果需要跳过标题行,请从2开始
对于(var i=2;我从未尝试过这个,但您可以尝试使用映射。键将是attributename,值将是属性的值。@PhilippSander使用java脚本或jquery是否可能?可能。我真的不知道it@PhilippSander谢谢你们的支持!请查看这个帖子NP@AravindCheekkallur。我只是把它简化了一点ore通过使用javascript将其转换为json。我创建了它,并将其存储在一个隐藏的输入中
,这样它就会变成POST
@AravindCheekkallur的形式,这正是我在实际代码中所做的。我没有在JSFIDLE中这样做,因为我实际上没有在那里发布任何东西。@AravindCheekkallur,如果是的话一个好的答案,你应该接受它。事实上,你应该检查你之前的问题,并做同样的事情。你没有接受很多答案。
// 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);