POST到服务器,接收PDF,传递给用户w/jQuery

bry*_*ick 47 pdf ajax jquery post

我有一个用户点击以获取PDF的链接.在jQuery中,我创建一个POST ajax调用服务器来获取PDF.PDF带有正确的内容标题等,通常会导致浏览器打开Reader插件,或允许用户保存PDF.

由于我收到带有ajax调用的PDF,我不知道如何处理我在OnSuccess回调中获得的数据.如何将我收到的数据提供给浏览器并允许它使用PDF响应进行默认操作?

Vin*_*ian 50

看看 - 用于请求类似Ajax的文件下载的jQuery插件

整个plugin只有大约30行代码(包括评论).

该调用与jquery ajax调用非常相似.

$.download('/export.php','filename=myPDF&format=pdf&content=' + pdfData );
Run Code Online (Sandbox Code Playgroud)

当然,您必须像在任何此类下载中一样在服务器端设置内容类型和内容处置标头.

在java中我会做这样的事情

response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename="exported.pdf");
Run Code Online (Sandbox Code Playgroud)


Sea*_*ean 31

你根本不需要jQuery.只需通过表单正常提交POST,并在服务器端添加HTTP标头

Content-Disposition: attachment; filename="whatever.pdf"
Run Code Online (Sandbox Code Playgroud)

浏览器将执行默认操作.

或者,如果您想要更加谨慎地报告PDF生成期间可能发生的任何错误,您可以执行此操作.使用jQuery将参数发布到服务器.在服务器上,生成二进制内容并将其缓存在某处几分钟,可通过您放入用户会话的密钥访问,并向您的页面返回"成功"Ajax响应(或者如果出现错误,则返回"错误"回应).如果页面返回成功响应,它可以立即执行以下操作:

window.location = "/get/my/pdf";
Run Code Online (Sandbox Code Playgroud)

然后,服务器返回缓存的PDF内容.请务必包含Content-Disposition标头,如上所述.

  • 您可能不需要,但有时您会这样做;) (6认同)