1

我正在使用第 3 方工具 (TCPD) 将数据导出为 PDF。如果我使用表单并将数据发布到导出 php 页面,它可以正常工作。但是,我还有另一个需要调用相同的导出器页面并通过 ajax 将它需要的参数传递给它,以便以这种方式输出 pdf 文件。一切似乎都工作正常,除了当我得到 pdf 的输出时,当我使用 ajax 调用时它没有打开我的 pdf 阅读器来查看它......它只是留下一个空白屏幕。在 Firebug 控制台中,我可以看到 pdf 文档的输出,它只是没有像我使用表单并点击提交按钮那样弹出 pdf 阅读器。

关于我能做些什么来解决这个问题的任何想法?

如果有帮助,这是我的 ajax 代码:

url = "admin.php?rst_post=y&action=exportresults&sid=123&answerid=321&filterinc=show&exportstyle=full&answers=long&type=pdf&export_from=&export_to=&convertyto=&convertnto=";

$.ajax({
    async: false,
    type: "GET", 
    url: url, 
    contentType: "charset=utf-8", 
    complete: function(rc)
    { 
        //alert(rc);
    }
});
4

1 回答 1

0

这是我放在一起的工作原型。我不确定它是否符合您的要求,但我认为它可能很接近。

假设:我假设您希望它在浏览器的 Reader 插件中打开。如果没有,请告诉我,我会相应地调整我的答案。

为什么不使用 AJAX 动态添加 IFRAME 到您的页面并在其中显示 PDF?这是一个工作原型:

<html>
    <head>
        <style type="text/css">
            .inlinePdf {
                width: 50%;
                height: 50%;
            }
        </style>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
        <script type="text/javascript">

            $(document).ready(function() {
                var url = "http://www.irs.gov/pub/irs-pdf/fw4.pdf";
                $("<iframe></iframe>").addClass("inlinePdf").attr("src", url).appendTo("#content");
            });

        </script>
    </head>
    <body>
        <div id="content">
        </div>
    </body>
</html>

这将在 IFRAME 中加载美国 W-4 PDF(uggh...taxes)。我正在使用 document.ready 执行此操作,但我可以通过单击按钮来执行此操作。

让我知道这是否接近。我会相应地更新。希望这可以帮助!

顺便说一句——这篇关于 Encosia 的文很有用(它处理 ASP.NET AJAX,但概念是一样的)。

编辑:如果您只想为 PDF 打开一个新窗口(因为您是通过 URL 请求它),您可以这样做而不是嵌入 IFRAME:

$(document).ready(function() {
    var url = "http://www.irs.gov/pub/irs-pdf/fw4.pdf";
    window.open(url, "_blank");
});

如果您在服务器端有控制权,请将content-disposition标题设置为attachment,您应该会看到一个打开/保存对话框。然后新窗口应该关闭。

于 2010-08-20T20:31:11.703 回答