Javascript Ajax文件下载操作

Javascript Ajax文件下载操作,javascript,php,jquery,ajax,pdf,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'); 每当浏览器读取gen.php时。pdf文件将被下载。正如我所说,它工作得非常完美 直到,我尝试用ajax实现

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

我一直在使用mPDF(php模块创建pdf文件)

gen.php

require("./MPDF56/mpdf.php");
$mpdf=new mPDF();
$mpdf->WriteHTML('<p>Hallo World</p>');
$mpdf->Output('filename.pdf','I');

每当浏览器读取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);
}
文档以字符串形式接收文件。 我尝试了mPDF.OUTPUT函数的所有选项。没有结果

我想找个工作,但我不知道怎么做。

Ajax在发送数据时需要打开一个弹出窗口。因此,文件下载操作将在另一个标记下完成

也许吧。我可以尝试打开gen.php的一个不可见的iframe,并在创建框架后发送数据

任何建议都会有帮助

很快


ajax如何调用php文件(下载文件)。在发送必要的数据之后。

我想这篇文章标题中提出的问题在这里得到了回答:

但据我所知,可能有一种更简单的方法来实现你的目标。如果您需要将信息发送到
gen.php
脚本,并且您担心为准备PDF而发送的数据的大小以及HTTP GET如何处理,请改用表单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使用适当的标题进行响应,我希望会这样做,主页不会重新加载,但文件会发送到浏览器进行下载。

可能重复:这是对我的问题的高度过份的回答。让我澄清一下;有没有可能在ajax发送数据后打开一个新窗口。啊,这很有帮助。简短的回答是的。但从更大的角度来看,您是否需要先将信息发送到服务器?我在你的代码里没看到。什么是
inps
?inps是一个多维数组(带有key->val对),包含表单中的所有输入。gen.php使用该数组生成一个pdf文件,并将其发送到浏览器(它需要这样做),该文件可以进入URL并执行
窗口。location='gen.php?key1=value1&key2=value2'
?而不是使用AJAX。我理解的是。此表单将通过javascript(根据inps数组)构建并发布到gen.php。因此,数据将通过POST发送,gen.php将通过传统方式完成其余工作。没有ajax或任何动态跨端scrpits?
<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>