我有一个链接,用户单击该链接即可获取PDF。在jQuery中,我创建了对服务器的POST ajax调用以获取PDF。PDF附带正确的内容标题等,通常会导致浏览器打开Reader插件,或者允许用户保存PDF。
由于我正在通过ajax调用获取PDF,因此我不确定如何处理在OnSuccess回调中获取的数据。如何将接收到的数据提供给浏览器,并允许它对PDF响应执行默认操作?
您根本不需要jQuery。只需通过表单正常提交POST,然后在服务器端添加HTTP标头
Content-Disposition: attachment; filename="whatever.pdf"
浏览器将执行其默认操作。
或者,如果您要更小心地报告在PDF生成期间可能发生的任何错误,则可以执行此操作。使用jQuery将参数发布到服务器。在服务器上,生成二进制内容并将其缓存到某处几分钟,可通过您放置在用户会话中的密钥进行访问,然后将“成功” Ajax响应返回到您的页面(或者,如果有错误,则返回一个“错误”响应)。如果页面返回成功响应,它可以立即执行以下操作:
window.location = "/get/my/pdf";
然后,服务器返回缓存的PDF内容。确保包含如上所述的Content-Disposition标头。