我有一个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中使用不同的值在每个循环中多次触发表单提交即可。其余仅用于上下文。
最佳答案
也许您不能多次提交表格。
因此,将您的Submit函数更改为帖子,然后删除表单标签。
....
$("#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>-->
希望这能对您有所帮助。