【问题标题】:Submit my form in 2 times doesn't work提交我的表格 2 次不起作用
【发布时间】: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() 实际提交表单。

【问题讨论】:

  • jsubmitNumber 是如何声明/初始化的?
  • 还有mapIter?此外,如果不了解 DOM 的结构和内容,就很难诊断问题。发布 HTML 或它的大纲会很有帮助。不清楚[id^="userLines"]对应什么。
  • 我已经编辑了我的代码。我的表单包含许多行是用户信息(姓名、名字、电子邮件......)我有 3 个具有相同结构的选项卡(UserInfo、UserInfoEdited、UserInfoBackup)
  • [id^="userLines"] 是因为我需要先清空表单内容,然后只添加我的前 N ​​行,依此类推
  • 我看到 input 元素被附加到 #zgImport,但它们被添加时没有任何 ID,所以我不确定该行将如何清除 @987654328 中的元素@.

标签: javascript jquery forms post


【解决方案1】:

或者,只需在 uri 中提交 1 个参数 criteria...然后该参数是 string,然后您发送一个 JSON 对象...然后在服务器端对其进行反序列化...

1个对象参数

【讨论】:

  • @Lempkin 从字面上看,你可以拥有一个大的 JSON 对象,有一个最大的 JSON 大小......但如果你遇到了,你可能会尝试发送太多数据。可能需要考虑如何分页或将其限制为您需要的数据。
  • JSON size max 是否大于默认的 POST max ?实际上这个表格是用一个 .csv 文件填充的,我有 700 行,每行 14 个单元格,这就是我达到 tomcat 默认 POST 限制的原因
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
相关资源
最近更新 更多