ここでは、カスタムの社内フレームワークを使用して ajax を実行する興味深い方法があります。
CT.postSynch('report/index/downloadProjectsInProgress', {}, function(data){
});
Report
これは ajax に、 と呼ばれるモジュール、 と呼ばれるコントローラー、 と呼ばれるIndex
アクションを探すように指示しますajazDownloadProjectInprogress
関数ajazDownloadProjectInprogressを作成しました。これは、返されたデータに基づいて単純なPDFを作成するだけです。その関数には、次のようなものがあります(DOMPDFを使用):
$dompdf = new DOMPDF();
$content = $this->raw('./report.header','./projectsInProgressReport','./report.footer');
$dompdf->load_html($content);
$dompdf->render();
$dompdf->output();
header('Pragma:');
header('Cache-Control: private,no-cache');
return $dompdf->stream("Structure Report - ProgressReports.pdf", array('Attachment' => 1));
ここで行っているのは、ビューを html または raw データとしてレンダリングする方法に基づいてコンテンツを取得し、ajax を介して pdf をストリーミングしようとすることだけです。
上記のコードでは、ajax 呼び出しを処理する方法を示しましたが、次のようにしました。
CT.postSynch('report/index/downloadProjectsInProgress', {}, function(data){
return data;
});
これで、ネットワーク タブに次のように表示されます。
%PDF-1.3
1 0 obj
<< /Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R >>
endobj
2 0 obj
<< /Type /Outlines /Count 0 >>
endobj
3 0 obj
<< /Type /Pages
/Kids [6 0 R
]
/Count 1
/Resources <<
/ProcSet 4 0 R
/Font <<
/F1 8 0 R
/F2 9 0 R
>>
/XObject <<
/I1 10 0 R
/I2 11 0 R
これは、返されたものの単なるサンプルです.... ajaxを介してこれを行っておらず、このアクションを直接呼び出しただけの場合、実際のPDFが目的のコンテンツでダウンロードされます。
ajax呼び出しを介してPDFをダウンロードするためにあなたが何をすべきか知っている人はいますか? ajax自体がファイルをダウンロードしないことは知っていますが、関数がダウンロードプロセスを開始するようにすべてを設定しました。