如果通过AJAX调用脚本,则TCPDF Output()函数方法不起作用,但如果在浏览器中调用脚本,则该方法有效

时间:2014-02-26 19:14:40

标签: javascript php jquery ajax pdf

我正在使用TCPDF动态生成PDF文档。我正在使用jQuery的$.ajax()方法来调用PDF生成脚本(pdf_output.php),该脚本使用TCPDF的Output()方法将PDF保存到服务器的文件系统中:

//Close and output PDF document
$pdf->Output("Account Summary - ".$client_data['name'].".pdf", 'F');

这在直接从浏览器调用PHP脚本时效果很好,但在通过AJAX调用脚本时不起作用。该脚本执行(我可以通过$_POST将PHP脚本中的echo json_encode()变量打印到开发人员控制台中,并且脚本在末尾返回一个值),但PDF永远不会保存到服务器的文件系统中。 / p>

但是,如果我直接在浏览器中运行pdf_output.php脚本,它就可以了!

以下是我调用输出脚本的方法:

使用Javascript:

function trigger(client_number, month, year)
{
  $("#selected_client").val(client_number);
  $('#cash_recon').modal('show'); 

  var function_name = "_generate_pdf_closing";
  var data =
      { 
        function_name: function_name,
        client_id: client_number,
        month: month,
        year: year
      }
  console.dir(data);
   $.ajax({
      type: "POST",
      url: "ajax/inspect.php",
      data: data,
      success: function (data) 
      {
        console.log("Success callback executed!");
      },

});

Inspect.php

<?php
include_once('../includes/data_functions.php');
$function_name = $_REQUEST['function_name'];
switch ($function_name) 
{
    case '_generate_pdf_closing':
        print (generate_pdf_closing($_REQUEST['client_id'], $_REQUEST['month'], $_REQUEST['year']));
        break;
}
?>
来自data_functions.php的

generate_pdf_closing():

function generate_pdf_closing($client_id, $month, $year){

  include("../pdf/pdf_output.php");
  return $result;

}

澄清一下:如果我在浏览器中调用pdf_output.php文件,它会生成并完美地将PDF保存到服务器。但是,如果我通过AJAX调用pdf_output.php脚本,它似乎会执行,但PDF永远不会生成/保存到服务器。

想法?任何帮助表示赞赏:)

1 个答案:

答案 0 :(得分:1)

这已经解决了!问题是我们在定义Output()方法的文件位置时必须使用绝对路径。