【问题标题】:Call php file which return PDF with jQuery AJAX function使用 jQuery AJAX 函数调用返回 PDF 的 php 文件
【发布时间】:2015-05-04 13:59:37
【问题描述】:

我的 php 文件:example_061.php 创建 PDF 返回,一切正常。

现在我想用 jQuery AJAX 调用该文件以在我的屏幕上获取它,我尝试:

$("#proba").click(function() {
  //in here we can do the ajax after validating the field isn't empty.
  $.ajax({
    url: "tcpdf/examples/example_061.php",
    type: "POST",
    async: true, 
    data: { 
      ime: $("#ime").val(),
      pozicija: $("#pozicija").val(),
      jmbg: $("#jmbg").val()
    }, //your form data to post goes here as a json object
    dataType: "html",
    success: function(response) {
      window.open('example_061.pdf');
    },  
  });        
});

一切都很好,所以成功功能正常工作,我收到警报消息,但我没有下载 PDF 文件或在屏幕上显示。我该怎么做?

【问题讨论】:

  • 在 PHP 文件的末尾我有: //关闭并输出 PDF 文档 return $pdf->Output('example_061.pdf', 'I');
  • 那里有很多 类似 Ajax 的下载器...这是我自己的例子:github.com/gasparesganga/jquery-ajax-downloader
  • 您使用的是哪个 PDF 库? ->Output() 有哪些选项?
  • 我更新了我的问题...所以我将数据发送到 php 文件以获取 pdf 输出放置我现在如何下载 PDF 以及我使用 ajax 发送的生成数据?

标签: javascript php jquery ajax pdf


【解决方案1】:

您不需要使用 AJAX 来下载文件。如果设置了content-disposition 标头,则会下载,不会重新加载当前页面。

只需将其添加到创建 PDF 的 php 脚本中:

header('Content-Disposition: attachment; filename=' . $MyFileName); 

使用常规锚标记链接代替 AJAX:

<a href="tcpdf/examples/example_061.php">Download</a>

正如 cmets 中有人指出的那样,如果您需要发布您仍然可以使用具有相同效果的简单表单:

<form method="POST" ACTION="tcpdf/examples/example_061.php">
<input type="hidden" name="myPostItem" value="My POSt VALUE" />
<input type="submit" value="download">
</form>

【讨论】:

  • 对不起,我需要将一些数据发送到 php 文件来创建我需要的 pdf...所以我需要使用 ajax...
  • @milemilicmile 为什么不能使用 GET 而不是 POST?
  • @milemilicmile,您仍然可以对 example_061.php 进行常规 POST,即使它最终会输出 PDF。不需要为此使用 AJAX...
  • 我更新了我的问题,所以我将数据发送到 php 文件以获取 pdf 输出,我现在如何下载 PDF 以及我使用 ajax 发送的生成数据?
  • @milemilicmile 你不能!下载内容涉及将文件复制到文件系统。 JS 无法访问文件系统,只有浏览器本身可以。如果您需要发布,您需要使用上面发布的答案的一些变体。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 2011-01-17
  • 1970-01-01
相关资源
最近更新 更多