在我的网站上,我有一个 php 文件,它使用 mpdf-plugin 通过对 MYSQL 数据库进行查询来创建 pdf 文件。
基本网址:pdf_report.php?VARa=b&VARb=c。(VARa 和 VARb 用作 GET 变量来对数据库进行查询。)
不是我真正的问题:我想显示一个在生成 PDF 时显示的加载对话框。完成后,加载对话框应该会消失,并且 PDF 文件会下载(或显示在浏览器中)。为了实现这一点,我想我可以通过使用示例来使用“jquery.fileDownload”文件。但由于我是 Jquery 的初学者,我找不到让它工作的方法。
到目前为止,我提出的是(完全按照示例):
<?php
header('Set-Cookie: fileDownload=true');
header("Content-type: text/pdf");
header('Content-Disposition: attachment; filename="report_b_c.pdf"');
//b and c are the values of the variables VARa and VARb
?>
<html>
<head>
<title>PDF Wait dialog</title>
<link href="css/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="js/jquery-ui.js" type="text/javascript"></script>
<script src="js/jquery-1.8.3.js" type="text/javascript"></script>
<script src="js/jquery.fileDownload.js" type="text/javascript"></script>
enter code here
</head>
<body>
<script>
$(function () {
$(document).on("click", "a.fileDownloadCustomRichExperience", function () {
var $preparingFileModal = $("#preparing-file-modal");
$preparingFileModal.dialog({ modal: true });
$.fileDownload($(this).attr('href'), {
successCallback: function (url) {
$preparingFileModal.dialog('close');
},
failCallback: function (responseHtml, url) {
$preparingFileModal.dialog('close');
$("#error-modal").dialog({ modal: true });
}
});
return false; //this is critical to stop the click event which will trigger a normal file download!
});
});
</script>
<div id="preparing-file-modal" title="Preparing report..." style="display: none;">
We are preparing your report, please wait...
<div class="ui-progressbar-value ui-corner-left ui-corner-right" style="width: 100%; height:22px; margin-top: 20px;"></div>
</div>
<div id="error-modal" title="Error" style="display: none;">
There was a problem generating your report, please try again.
</div>
<a class="fileDownloadCustomRichExperience" href="pdf_logboek_report.php?VARa=b&VARb=c">Report.pdf</a>
</body>
</html>
[编辑] 运行此 php 文件时,不会显示错误。有时会在 0.5 秒内显示一个对话框并下载一个 pdf 文件。文件名:logboek_report_.pdf(这不是预期的文件,内容为空!)
当我运行 pdf_logboek_report.php?VARa=b&VARb=c 时,会创建并显示预期的 pdf 文件(或根据浏览器支持下载)。
[编辑] 我要加载的 pdf 通常需要 30-60 秒才能生成。
但不幸的是,它没有按预期工作,因为我(作为初学者)做错了什么。或者是一种更简单的方法来实现我想要的对话?!
请帮帮我!