循环提交表单

Posted

技术标签:

【中文标题】循环提交表单【英文标题】:Submit form in a loop 【发布时间】:2013-04-23 18:37:40 【问题描述】:

我有一个 PDF 生成器,它将完整的 html 文档字符串作为参数,然后打开在新选项卡/窗口中创建的 PDF,或下载文件。我被要求连接一个表格,该表格将允许制作一个证书,该证书采用分号分隔的名称并从中生成多个 PDF。这是执行此操作的代码:

$("#certgensubmit").click(function (event) 
    // Get the names to generate certificates for. 
    var names = $("#presented-to").html().split(';');
    $.each(names, function(index, value) 
        if(value.length > 0) 
            var presentedBy = $("#presented-by").html();
            var awardName = $("#award-name").html();
            var presentedDate = $("#presented-date").html();
            var signerName = $("#signer-name").html();

            var html = getCertificateHTML(presentedBy, value, awardName, presentedDate, signerName);
            //console.log(html);
            $("#HtmlContent").val(html);
            $("#pdfform").submit();
        
    );
);

这可行,只是它只创建第一个证书 PDF。不过,它每次都在处理代码。如果我取消注释“console.log(html)”行,我会在 Chrome 的控制台中看到正确的输出。我能够通过在循环中在 javascript 中创建一个新文档并从每个文档中运行表单提交来使其正常工作。唯一的问题是它仅在将文本放入发送到 PDF 生成器的字段中时起作用,但在生成器需要的字段中发送 HTML 时完全失败。因此,问题似乎与在创建 PDF 期间打开新选项卡有关。我需要发生这种情况,因此用户不会离开接受 PDF 输入的 UI。

不要太拘泥于 PDF 生成方面 - 我只需要知道如何在 jQuery 每个循环中使用不同的值多次触发表单提交。其余的只是为了上下文。

【问题讨论】:

您是否考虑过只创建一个包含多个证书的 PDF,每页一个证书? 尝试添加一个延迟,看看会发生什么...... sleep() 什么的。 【参考方案1】:

也许您不能多次提交表单。

因此,将您的提交功能更改为帖子,并删除您的表单标签。

....

$("#HtmlContent").val(html);

$.post("pdf_creator.php",

  input_name:$("#HtmlContent").val()
,
function(data,status)
  //alert("Data: " + data + "\nStatus: " + status);
);

....


<!--<form action='pdf_creator.php' id='pdfform'> //form tags out -->
    <input type='text?' name='input_name' id='HtmlContent' value=''>
<!--</form>-->

希望这行得通,对您有所帮助。

【讨论】:

以上是关于循环提交表单的主要内容,如果未能解决你的问题,请参考以下文章

js判断循环多个表单问题

循环提交表单

循环表单并使用 jQuery 使用 AJAX 提交

js代码循环提交多个请求?麻烦帮忙改成完整代码

VUE基础:循环、判断、点击事件及表单验证双向绑定

php 提交多行多列的form表单