文件下载Ajax操作

时间:2014-06-14 18:19:24

标签: javascript php jquery ajax pdf

需要下载动态生成的文件(根据用户输入)...

我一直在使用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文件(下载文件)。发送必要的数据后。

1 个答案:

答案 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使用适当的标头响应,并且我预期它会响应,则主页面不会重新加载,但文件会被发送到浏览器进行下载。