需要下载动态生成的文件(根据用户输入)...
我一直在使用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.OUTPUT函数的所有选项。没有结果。
我想过一个解决方法,但我不知道如何实现它。
Ajax需要在发送数据时打开弹出窗口。因此,文件下载操作将在另一个标签下完成。
或者也许吧。我可以尝试打开gen.php的一个不可见的iframe,并在i帧创建后发送数据......
任何建议都会有所帮助。
不久
ajax如何调用php文件(下载文件)。发送必要的数据后。
答案 0 :(得分:0)
我认为这篇文章标题中提出的问题在这里得到了解答:Download a file by 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使用适当的标头响应,并且我预期它会响应,则主页面不会重新加载,但文件会被发送到浏览器进行下载。