4

我想通过 jquery 帖子下载 pdf 文件。我试过这个:

$('#downloadPdf').click(function() {
    var id = $('#fileId').val();

    $.ajax({
        type: "POST",
        url: "includes/download_pdf.php",
        data: 'file_id=' + id,
        complete: function(data) {
            $('#pdf_results').html(data.responseText);
        }
    });
});

代码PHP:

<?php 
    $file_name = $_POST['file_id']; 
    // We'll be outputting a PDF header('Content-type: application/pdf'); 
    // It will be called downloaded.pdf header('Content-Disposition: attachment; filename="'.$file_name.'.pdf"'); 
    // The PDF source is in original.pdf readfile('/var/www/vhosts/domain.nl/private/'.$file_name.'.pdf'); 
?>

当我使用这段代码时,我得到了所有奇怪的登录#pdf_results。我想将 PDF 保存到我的计算机,但这不起作用。

有人知道如何解决这个问题吗?

提前致谢!

4

4 回答 4

1

You need to achieve this : I didn't really trace your program but you need the content disposition line in your php to make it work.

<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
**header('Content-Disposition: attachment; filename="downloaded.pdf"');**

// The PDF source is in original.pdf
readfile('original.pdf');
?>

check the manual here

Also you can move the file over onto an iframe but that's a security risk, hence another topic.

于 2013-05-20T05:51:23.610 回答
1

您不需要为此使用 AJAX。尝试使用这样的东西:

$(function(){
    $('#downloadPdf').click(function(){
        var id = $('#fileId').val();
        window.open(location.protocol + '//' + location.hostname + '/includes/download_pdf.php?file_id=' + id);
        return false;
    });
});

干杯!

于 2012-05-02T08:02:54.130 回答
1

这里不需要ajax。

尝试使用 Rory McCrossan 的解决方案: POST 到服务器,接收 PDF,使用 jQuery 交付给用户

使用插件或简单地链接到文件并确保您的服务器发送正确的标题(否则您可以使用 php 读取文件并从那里输出:http: //www.saschakimmel.com/2009/05/php-提示用户下载特定文件/

于 2012-05-02T08:05:14.263 回答
1

在页面上有一个不可见<iframe/>的,并创建一个<form>带有属性method="POST" action="includes/download_pdf.php" target="name_of_the_iframe"的,添加<input type="hidden" name="file_id" value="the_value"/>到它,并提交它。

以上所有内容都可以在 JavaScript 中完成,而无需将这种标记放入页面中,以保持内容整洁。这些都不是ajax。

于 2012-05-02T08:07:32.617 回答