POST表单到新标签。输出为PDF

时间:2014-07-30 16:35:07

标签: javascript jquery pdf

我正在撰写一个为用户生成一些PDF文档的网站。我需要做两件事。

1)当用户点击提交时,应在新选项卡中打开在POST响应中返回的生成的PDF。

2)对于某些请求,需要刷新原始页面以显示此PDF位于用户的库中。

我想出了这个JS。它确实正确地提交表单,将输出放在新选项卡中,然后重新加载页面。

$.ajax({
    type: 'POST',
    url: '/share/pdf/',
    data: $('#pdf_share_form').serialize(),
    async: false,
    success: function (d) {
        var w = window.open();
        w.document.write(d);
        location.replace('/pdf/');
    }
});

问题是document.write()期待HTML,因此PDF显示为混乱的二进制字符。

我觉得我需要表明在编写数据时应该下载数据,但我不知道该怎么做。请注意,某些生成的文件是短暂的,并在从POST表单返回后立即删除,因此我无法执行任何类型的window.open(url)。

1 个答案:

答案 0 :(得分:0)

感谢@Remy我想了解我需要做些什么。在我写这个问题之前,我实际上有一个标准的jQuery submit()调用,表单设置为target="_blank"。这很好,但我在提交后重新加载页面时出现问题。这导致我$.ajax(),这是错误的解决方案。

解决方案非常简单:

$.when($('#pdf_share_form').submit()).then(function() {
    location.replace('/pdf/');
});


<form id="pdf_share_form" action="/share/pdf/" target="_blank" method="post">
    <input id="pdf_index" name="pdf_index">
    <input id="pdf_name" name="pdf_name">
</form>