2010-08-20 96 views
1

我正在使用第三方工具(TCPDF)将数据导出为PDF。如果我使用表单并将数据发布到导出php页面,它工作正常。然而,我有另一个需要调用相同的出口商页面,并通过ajax传递它需要的参数,以这种方式输出PDF文件。一切似乎工作正常,除了当我得到PDF的输出,它不打开我的PDF阅读器来看看它,当我使用ajax调用...它只是留下一个空白的屏幕。在Firebug控制台中,我可以看到pdf文档的输出,它只是不弹出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); 
    } 
}); 

回答

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 ...税)。我正在用document.ready来做这件事,但我可以通过点击按钮来做到这一点。

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

顺便说一句 - 这blog post 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,您应该看到一个打开/保存对话框。那么新窗口应该关闭。