【问题标题】:TCPDF Output() function method not working if script is called through AJAX, but works if script is called in browser如果通过 AJAX 调用脚本,则 TCPDF Output() 函数方法不起作用,但如果在浏览器中调用脚本则有效
【发布时间】:2014-02-26 19:14:40
【问题描述】:

我正在使用 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 调用脚本时不起作用。脚本执行(我可以通过echo json_encode() 将PHP 脚本中的$_POST 变量打印到开发者控制台,脚本最后返回一个值),但PDF 永远不会保存到服务器的文件系统中。

但是,如果我直接在浏览器中运行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!");
      },

});

检查.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 生成_pdf_closure():

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

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

}

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

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

【问题讨论】:

    标签: javascript php jquery ajax pdf


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-02-26
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      相关资源
      最近更新 更多