【发布时间】: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