0

嗨,我有一个 jquery ajax 接收表单的操作。一旦从表单中获取数据,我就可以成功调用 laporan_per_bulan.php 文件,该文件包含从 ajax 提取数据并根据数据打印报告的代码。

但是,报告没有出现?当 ajax 调用成功时,我想要一个出现在新标签中的报告,比如在谷歌 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();

?>

谢谢你。

4

2 回答 2

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;
      }
  }

或者你 cab 执行以下操作

success: function(data) {
   if(data.success == true){                    
     window.location.href  = site_url+path to pdf/download.php?uniqueID=data.uniqueID;
    }
  }

下载.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;
        }
}
于 2013-09-23T06:32:49.770 回答
0

请查看这个 jquery 插件,它通过显示隐藏字段来完成这项工作。

我在所有主要浏览器上都检查过。

网址在这里: http: //filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/

于 2013-09-26T10:16:26.927 回答