需要下载动态生成的文件(根据用户输入)…
我一直在使用mPDF (php模块创建pdf文件)。
gen.php
require("./MPDF56/mpdf.php");
$mpdf=new mPDF();
$mpdf->WriteHTML('<p>Hallo World</p>');
$mpdf->Output('filename.pdf','I');
这个脚本工作完美。输出方法可以有几个选项,如
'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的所有选项。输出函数。没有结果。
我想了一个工作,但我不知道如何实现它。
Ajax在发送数据时需要打开一个弹出窗口。所以文件下载操作将在另一个标签下完成。或者。我可以尝试打开gen.php的一个不可见的iframe,并在I帧创建后发送数据…
任何建议都会有帮助。
不久ajax如何调用php文件(下载文件)。
我想这篇文章标题中问的问题在这里得到了回答:用jQuery下载一个文件。Ajax
但是可能有一个更简单的方法来实现你的目标,据我所知。如果你需要发送信息到gen.php
脚本,你担心发送的数据大小准备PDF和HTTP GET如何处理,使用FORM POST代替:
<form action="gen.php" method="post">
<input type="text" name="X">
<input type="text" name="Y">
<input type="text" name="Z">
<input type="submit" value="Download">
</form>
如果mPDF响应适当的标头(我期望如此),则主页面不会重新加载,而是将文件发送到浏览器进行下载。