私のWebサイトには、mpdf-pluginを使用してMYSQLデータベースでクエリを実行してpdfファイルを作成するphp-fileがあります。
基本的なURL:pdf_report.php?VARa = b&VARb=c。(VARaとVARbは、データベースでクエリを実行するためのGET変数として使用されます。)
私の本当の質問はありません。PDFの作成中に表示される読み込みダイアログを表示したいと思います。完了すると、読み込みダイアログが消え、PDFファイルがダウンロードされます(またはブラウザに表示されます)。これを実現するために、例を使用して「jquery.fileDownload」ファイルを使用できると思いました。しかし、私はJqueryの初心者なので、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秒かかります。
しかし、残念ながら、私は(初心者として)何か間違ったことをしているので、期待どおりに機能しません。または、私が望む方法でダイアログを実現するためのはるかに簡単な方法ですか?!
私を助けてください!