一次提交多个表单将中止除最后一个表单外的所有表单提交

Submiting multiple forms at once aborts all the form submissions, except the last

本文关键字:表单 最后一个 表单提交 一次 提交      更新时间:2023-09-26

我有一个ASP.NET MVC应用程序,正在使用devexpress的pivot网格和我需要用一个页面上的网格做一个excell。文档中说,为了按页面上的状态导出轴心网格(保持列收缩/展开),您需要将轴心网格保存在表单中并提交。

我的问题是,当我提交页面上的所有表格时,只有一个完成了,其他的都被取消了。我尝试过使用ajaxForm插件,但这并不能保持页面上的网格(所有列都展开了)。

我的问题是,如果前一个表格已经发布完毕,你是否知道一种提交表格的方法?

我的表格看起来像这个

<form class="table-content" method="post" target="excel-export-iframe" style="display: block;" action="url">

以隐藏的iframe作为目标

<iframe style="display: none" id="excel-export-iframe" name="excel-export-iframe"></iframe>

这是提交的代码

$(".table-content").each(function () {
    $(this).submit();
});

根据@Rory 的评论

使用以下AJAX代码

$(".table-content").each(function () {
    var data = $(this).serialize();
    $.post('url', data);
});

我最终在目标iframe中加载了一些东西,然后使用load-the函数发布下一个表单,依此类推

<form class="table-content" method="post" target="excel-export-iframe" style="display: block;" action="@Url.Action("ExcelExport")">
<iframe style="display: none" id="excel-export-iframe" name="excel-export-iframe"></iframe>
var submitArray;
$("#excel-export-iframe").load(function () {
    var status = $("#excel-export-iframe").contents().find("pre").text();
    if (status == "Post Successfull") {
        if (submitArray.length != 0) {                    
            $(submitArray .splice(0, 1)).submit();
        }
    }
});
$('.btn-export').click(function () {
    submitArray = $(".table-content");
    $(submitArray .splice(0, 1)).submit();
}

在控制器中,我返回这个:

public ActionResult ExcelExport(...)
{
    ...
    return Content("<pre>Post Successfull</pre>");
}

我很确定这不是最佳实践,但这符合我的目的,考虑到使用Ajax不是一种选择,我找不到任何其他方式来发布多个表单。