【发布时间】:2014-06-14 18:19:23
【问题描述】:
需要下载一个动态生成的文件(根据用户输入)...
我一直在使用 mPDF(php 模块来创建 pdf 文件)。
gen.php
require("./MPDF56/mpdf.php");
$mpdf=new mPDF();
$mpdf->WriteHTML('<p>Hallo World</p>');
$mpdf->Output('filename.pdf','I');
此脚本完美运行。输出方法可以有几个选项 Like
'F' : to save pdf to local.
'S' : to return file as string.
'D' : to download the file.
'I' : force download... plug-in if available.
http://mpdf1.com/manual/index.php?tid=125
每当浏览器读取 gen.php。 pdf文件将被下载。正如我所说,它工作得很好......
直到,我尝试使用 ajax 来做到这一点。
这个脚本...
$.ajax({
type: 'POST',
cache: false,
url: './gen.php',
data: JSON.stringify(inps),
contentType: 'application/json',
});
触发 gen.php。 PDF 文件已创建。但是,文件不会发送到浏览器。
如果我将它添加到 ajax 部分...
success: function(response){
$("#result").html(response);
}
Document 以字符串形式接收文件。 我尝试了 mPDF.OUTPUT 函数的所有选项。没有结果。
我想了一个解决办法,但我不知道如何实现它。
Ajax 需要在发送数据时打开一个弹出窗口。所以文件下载操作将在另一个标签下完成。
或者也许。我可以尝试打开一个不可见的 gen.php iframe 并在创建 i 框架后发送数据...
任何建议都会有所帮助。
很快
ajax 如何调用 php 文件(即下载文件)。发送必要的数据后。
【问题讨论】:
-
这是对我问题的高度评价。让我澄清一下; ajax发送数据后是否可以打开一个新窗口。
-
啊,这有帮助。简短的回答是的。但是为了更大的图景,您是否需要先将信息发送到服务器?我在您的代码中没有看到它。
inps是什么? -
inps 是一个多维数组(带有 key->val 对),其中包含表单中的所有输入。 gen.php 使用该数组生成一个pdf文件并将其发送到浏览器。(它需要)
-
可以进入 URL 并执行
window.location='gen.php?key1=value1&key2=value2'吗?而不是使用 AJAX。
标签: javascript php jquery ajax pdf