我正在使用第三方工具(TCPDF)将数据导出为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);
}
});
答案 0 :(得分:0)
这是我放在一起的工作原型。我不确定它是否能满足您的需求,但我认为它可能很接近。
假设:我假设您希望它在浏览器的Reader插件中打开。如果没有,请告诉我,我会相应地调整我的答案。
为什么不动态地向您的页面添加IFRAME并在那里显示PDF,而不是使用AJAX?这是一个工作原型:
<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执行此操作,但我可以通过单击按钮来执行此操作。
如果这很接近,请告诉我。我会相应更新。希望这有帮助!
BTW - Encosia上的这个blog post很有用(它涉及ASP.NET AJAX,但概念是相同的)。
编辑:如果您只想打开PDF的新窗口(因为您是通过网址请求它),您可以这样做而不是嵌入式IFRAME:
$(document).ready(function() {
var url = "http://www.irs.gov/pub/irs-pdf/fw4.pdf";
window.open(url, "_blank");
});
如果您在服务器端有控制权,请将content-disposition
标题设置为attachment
,然后您应该打开/保存对话框。那时新窗口应该关闭。