jQuery PDF 加载后的事件?
jQuery event after a PDF loads?
我有一个允许用户生成自定义 PDF 的模式对话框。在他们单击 "Start" 按钮后,页面会使用 window.location 重定向到控制器,然后控制器会创建 PDF 并 return 发送它。
由于 PDF 需要多长时间才能 return,我想显示一个模态 "Generating PDF" 对话框,该对话框会在 PDF 完成并 returned 后自动关闭。
问题是我无法弄清楚 how/when 执行最终功能以 关闭 "Generating PDF" 对话框。由于控制器 return 是 application/pdf 类型,因此没有要附加的文档对象事件,对吧?执行此操作的最佳方法是什么?
重定向到控制器,创建您的 pdf 并保存它。控制器应该 return 在保存 pdf 后 一个关闭模式并重定向到另一个控件的 js,它只读取和响应 pdf 文件。
我会这样做
用户点击 link 创建 pdf
向服务器发送AJAX请求生成pdf
服务器将 pdf 创建添加到后台作业,returns
状态为 added
客户端收到状态,显示模型或动画并开始ping
服务器每 3 秒一次状态
服务器 returns (n) 秒后的状态为 completed/failed
和 link
pdf
客户端隐藏 model/animation,停止 ping 并在新选项卡中打开 link,这将
下载 pdf
感谢您的回复。 @PGill 走在正确的轨道上。我简化了他的方法:
- 用户单击“开始”按钮
- 显示 "Generating PDF" 模态对话框
- 向控制器 1 发送了一个 AJAX 请求以生成 PDF
- 控制器 1 创建 PDF(需要 5-60 秒),将其存储在安全位置,并returns一个唯一密钥
- "Generating PDF" 模态对话框已隐藏
- 浏览器被重定向到控制器 2 并发送唯一密钥
- 控制器 2 验证密钥,从安全位置检索 PDF,returns 它
这里的解决方案是将 PDF 的生成和 PDF 的下载分成 2 个步骤,以便在它们之间隐藏模态对话框。
验证它,从安全位置检索 PDF 并 returns 它。
ShowModalDialog();
$.ajax({
type: "GET",
url: 'GeneratePDFReportForDownload?' + params,
success: function (pdfkey, textStatus, jqXHR) {
HideModalDialog();
window.location = 'DownloadPDFReport?key=' + pdfkey;
},
async: true,
datatype: 'json'
});
我有一个允许用户生成自定义 PDF 的模式对话框。在他们单击 "Start" 按钮后,页面会使用 window.location 重定向到控制器,然后控制器会创建 PDF 并 return 发送它。
由于 PDF 需要多长时间才能 return,我想显示一个模态 "Generating PDF" 对话框,该对话框会在 PDF 完成并 returned 后自动关闭。
问题是我无法弄清楚 how/when 执行最终功能以 关闭 "Generating PDF" 对话框。由于控制器 return 是 application/pdf 类型,因此没有要附加的文档对象事件,对吧?执行此操作的最佳方法是什么?
重定向到控制器,创建您的 pdf 并保存它。控制器应该 return 在保存 pdf 后 一个关闭模式并重定向到另一个控件的 js,它只读取和响应 pdf 文件。
我会这样做
用户点击 link 创建 pdf
向服务器发送AJAX请求生成pdf
服务器将 pdf 创建添加到后台作业,returns 状态为
added
客户端收到状态,显示模型或动画并开始ping 服务器每 3 秒一次状态
服务器 returns (n) 秒后的状态为
completed/failed
和 link pdf客户端隐藏 model/animation,停止 ping 并在新选项卡中打开 link,这将 下载 pdf
感谢您的回复。 @PGill 走在正确的轨道上。我简化了他的方法:
- 用户单击“开始”按钮
- 显示 "Generating PDF" 模态对话框
- 向控制器 1 发送了一个 AJAX 请求以生成 PDF
- 控制器 1 创建 PDF(需要 5-60 秒),将其存储在安全位置,并returns一个唯一密钥
- "Generating PDF" 模态对话框已隐藏
- 浏览器被重定向到控制器 2 并发送唯一密钥
- 控制器 2 验证密钥,从安全位置检索 PDF,returns 它
这里的解决方案是将 PDF 的生成和 PDF 的下载分成 2 个步骤,以便在它们之间隐藏模态对话框。
验证它,从安全位置检索 PDF 并 returns 它。
ShowModalDialog();
$.ajax({
type: "GET",
url: 'GeneratePDFReportForDownload?' + params,
success: function (pdfkey, textStatus, jqXHR) {
HideModalDialog();
window.location = 'DownloadPDFReport?key=' + pdfkey;
},
async: true,
datatype: 'json'
});