您好我有一个jquery ajax接收表单的动作。 一旦来自表单的数据我就可以成功调用laporan_per_bulan.php文件,该文件包含从ajax中提取数据的代码并根据数据打印报告。
然而,报告没有出现? 当ajax调用成功时,我想要一个出现在Google Chrome中的新标签中,或者直接作为其他浏览器下载的报告。
这是我的ajax:
$('#save_report').click(function(e){
ajax_cetak_laporan();
});
function ajax_cetak_laporan() {
var bulan = $("#bulan option:selected").val();
var kd_kelas = $("#kd_kelas option:selected").val();
var kd_jur = $("#jur option:selected").val();
$.ajax({
type: "POST",
dataType: "json",
url: "../bayarspp/main/page/laporan_per_bulan.php",
data: "{'bulan':'" + bulan+ "', 'kd_kelas':'" + kd_kelas + "', 'kd_jur':'" + kd_jur + "'}",
success: function (html) {
// do something here...
}
});
}
这是我的 laporan_per_bulan.php 文件:
<?php
...
$bulan = $_POST['bulan'];
$kd_kelas = $_POST['kd_kelas'];
$jur = $_POST['kd_jur'];
$pdf->SetFont('Arial','',10);
$pdf->Cell(35, 0, 'Bulan');
$pdf->Cell(5, 0, ':');
$pdf->Cell(70, 0, $bulan);
$pdf->Ln(4);
$pdf->SetFont('Arial','',10);
$pdf->Cell(35, 3, 'Kelas');
$pdf->Cell(5, 3, ':');
$pdf->Cell(70, 3, $kd_kelas);
$pdf->Ln(10);
#output file PDF
$pdf->Output();
?>
谢谢。
答案 0 :(得分:0)
您可以在ajax请求上生成pdf并将其存储在服务器上,例如“/folder_name/uniqueID.pdf”。
将uniqueID作为ajax响应返回(EXP:{“success:true”,“uniqueID:121212”})。然后写在ajax成功部分
success: function(data) {
if(data.success == true){
window.location.href = site_url+path to pdf/+data.uniqueID.pdf;
}
}
或您驾驶室执行以下操作
success: function(data) {
if(data.success == true){
window.location.href = site_url+path to pdf/download.php?uniqueID=data.uniqueID;
}
}
的download.php
if(isset($_REQUEST['uniqueID'])){
$uniqueID= $_REQUEST['uniqueID'];
$downname="downloading_filename.pdf";
download($uniqueID,$downname);
}else{
//return to any url or die;
}
function download($uniqueID,$downname){
$cwd=getcwd();
$filedestination = $cwd."/".$uniqueID.".pdf";
if (file_exists($filedestination)) {
header('Content-Description: File Transfer');
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename='.$downname);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filedestination));
ob_clean();
flush();
readfile($filedestination);
ignore_user_abort(true);
if (connection_aborted()) {
unlink($filedestination);
}
if(file_exists($filedestination)){
unlink($filedestination);
}
exit;
}
}
答案 1 :(得分:0)
请查看这个jquery插件,通过显示隐藏字段来完成这项工作。
我在所有主流浏览器上都进行了检查。
网址: http://filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/