使用JQuery Ajax生成报告

时间:2013-09-23 03:59:57

标签: javascript php ajax jquery

您好我有一个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();

?>

谢谢。

2 个答案:

答案 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/