【发布时间】:2015-05-07 15:54:08
【问题描述】:
我需要提交一个带有 hudge 参数号的表单,并且我不允许修改我的 tomcat 中的 maxParameterCount。
所以我决定将我的表单数据分成几部分,然后逐个提交。
我尝试提交前 10 行,然后提交接下来的 10 行,依此类推。
但是当表单应该提交时,什么也没有发生,循环继续,最后我的表单仍然提交了所有行...... 我的部分代码:
var valuesOriginal = new Map();
var valuesEdited = new Map();
var valuesBackup = new Map();
$.each($('#zgImport').serializeArray(), function(i, field) {
if(field.name.substring(0,13) == "userLinesAuto"){
valuesEdited.set(field.name, field.value);
}else if (field.name.substring(0,17) == "userLinesOriginal"){
valuesBackup.set(field.name, field.value);
}else if (field.name.substring(0,9) == "userLines"){
valuesOriginal.set(field.name, field.value);
}
});
var totalRows = valuesOriginal.size;
$('[id^="userLines"]').attr("disabled", "disabled"); // empty form from userLines
var i =0;
var j=0;
var fieldsNumber = 14;
var rowPerSubmit = 3;
var submitNumber = Math.ceil((totalRows / fieldsNumber)/rowPerSubmit);
var currentRowNumber =0;
var cptAddedParams = 0;
var mapIter = valuesOriginal.entries();
var fieldPerSubmit = rowPerSubmit*fieldsNumber;
var currentField;
while(j<submitNumber){ // submiting several times
alert("new form");
while(cptAddedParams < fieldPerSubmit){ //Add params to form
currentField = mapIter.next().value;
var input = $("<input>").attr("type", "hidden").attr("name", currentField[0]).val(valuesOriginal.get(currentField[0]));
$('#zgImport').append($(input));
cptAddedParams++;
}
cptAddedParams =0;
j++;
alert("submiting");
jQuery("#zgImport").submit(function(){
alert("Submitted");
}); // submiting partial form
$('[id^="userLines"]').attr("disabled", "disabled"); // empty form from userLines
}
我只收到 1 次“已提交”警报(在我的测试中我得到 20 行,所以我应该有两次),并且我在我的 java 代码中的调试中看到控制器的方法只调用了 1 次所有表单行.
jquery 似乎在等待第二个 sumbit() 实际提交表单。
【问题讨论】:
-
j和submitNumber是如何声明/初始化的? -
还有
mapIter?此外,如果不了解 DOM 的结构和内容,就很难诊断问题。发布 HTML 或它的大纲会很有帮助。不清楚[id^="userLines"]对应什么。 -
我已经编辑了我的代码。我的表单包含许多行是用户信息(姓名、名字、电子邮件......)我有 3 个具有相同结构的选项卡(UserInfo、UserInfoEdited、UserInfoBackup)
-
[id^="userLines"] 是因为我需要先清空表单内容,然后只添加我的前 N 行,依此类推
-
我看到
input元素被附加到#zgImport,但它们被添加时没有任何 ID,所以我不确定该行将如何清除 @987654328 中的元素@.
标签: javascript jquery forms post