加载PDF后的jQuery事件



我有一个模式对话框,允许用户生成自定义的PDF。在他们点击"开始"按钮后,页面会用window.location重定向到一个控制器,然后控制器创建PDF并返回。

由于返回PDF需要很长时间,我想显示一个模式的"生成PDF"对话框,该对话框在PDF完成并返回后自动关闭。

问题是我不知道如何/何时执行最后一个函数来关闭"生成PDF"对话框。由于控制器返回的是application/pdf类型,因此没有可附加的文档对象事件,对吗?最好的方法是什么?

就是这样做的

  1. 用户点击链接创建pdf

  2. AJAX请求被发送到服务器以生成pdf

  3. 服务器将pdf创建添加到后台作业,并返回状态为added

  4. 客户端接收状态,显示模型或动画,并开始ping服务器每3秒的状态

  5. 服务器在(n(秒后将状态返回为completed/failed,并返回到pdf

  6. 客户端隐藏模型/动画,停止ping并在新选项卡中打开链接下载pdf

感谢您的回复@PGill走在了正确的轨道上。我简化了他的方法:

  1. 用户单击"开始"按钮
  2. 显示"生成PDF"模式对话框
  3. AJAX请求被发送到控制器1以生成PDF
  4. 控制器1创建PDF(需要5-60秒(,将其存储在安全位置,并返回唯一密钥
  5. "生成PDF"模式对话框被隐藏
  6. 浏览器被重定向到控制器2并发送唯一密钥
  7. 控制器2验证密钥,从安全位置检索PDF,并将其返回

这里的解决方案是将PDF的生成和PDF的下载分为两个步骤,以便在这两个步骤之间隐藏模式对话框。

验证它,从安全位置检索PDF并返回它。

ShowModalDialog();
$.ajax({
type: "GET",
url: 'GeneratePDFReportForDownload?' + params,
success: function (pdfkey, textStatus, jqXHR) {
HideModalDialog();
window.location = 'DownloadPDFReport?key=' + pdfkey;
},
async: true,
datatype: 'json'
});

重定向到一个控制器,该控制器创建并保存pdf文件。保存pdf文件后,控制器应返回一个关闭模态并重定向到另一个控件的js,该控件只读取并响应pdf文件。

最新更新