Javascript 使用ajax在浏览器中内联显示PDF
我知道这个问题已经被不同的方式问过很多次了。但我仍然无法找到答案。我的意思是我没有找到一个恰当的描述性答案 我使用mpdf库生成PDF。我通过ajax将一些隐藏字段的数据发布到PHP脚本中 以下是代码片段Javascript 使用ajax在浏览器中内联显示PDF,javascript,php,jquery,ajax,mpdf,Javascript,Php,Jquery,Ajax,Mpdf,我知道这个问题已经被不同的方式问过很多次了。但我仍然无法找到答案。我的意思是我没有找到一个恰当的描述性答案 我使用mpdf库生成PDF。我通过ajax将一些隐藏字段的数据发布到PHP脚本中 以下是代码片段 //ajax_file $("#button_id").click(function(e){ var table_clone=$("#table_id").clone(); var tableData=table_clone.prop('outerHTML');//html for pdf
//ajax_file
$("#button_id").click(function(e){
var table_clone=$("#table_id").clone();
var tableData=table_clone.prop('outerHTML');//html for pdf generation
dataString='page='+tableData;
$.ajax({
type: 'POST',
url: 'pdfgenerator.php',
data: dataString,
cache: false,
success: function(response)
{
//what to do here in order to display pdf
},
error: function(............){
.
.
}
});
});
PHP脚本
//pdfgenerator.php
<?php
include('../mpdf/mpdf.php');
if(/*checking post items are set*/)
{
//retriving post items
$mpdf=new mPDF('c','A4-L');
$mpdf->WriteHTML($tableData);
$mpdf->output('xyz.pdf','I');
exit;
}
?>
//pdfgenerator.php
以下是我的限制
->我不想将文件永久保存在服务器上(这可以通过output()中的“F”选项实现)
->我必须在浏览器中显示它,从那里可以下载它
如果在没有ajax的情况下调用PHP脚本,则该脚本可以正常工作。因此,它返回正确的数据,但我无法在浏览器中以pdf格式显示它
在寻找答案的过程中,我发现使用ajax是不可能的。
那么有没有办法用PHP或javascript做点什么呢。请提供一个描述性的答案
谢谢,您可以使用此代码
$.ajax({
type: 'POST',
url: 'pdfgenerator.php',
data: dataString,
cache: false,
success: function(response)
{
var tag ='<object width="400" height="500" type="application/pdf" data="'+xyz.pdf+'" id="show_obj1" class="obj"></object>';
$(#pdfdiv).html(tag);
},
error: function(............){
.
.
}
});
});
$.ajax({
键入:“POST”,
url:'pdfgenerator.php',
数据:dataString,
cache:false,
成功:功能(响应)
{
var标签=“”;
$(#pdfdiv).html(标记);
},
错误:函数(………){
.
.
}
});
});
这里是
$(#pdfdiv).html(标记)中的#pdfdiv
是要在其中显示pdf的div的idAjax的全部目的是在后台执行某些操作,但如果要显示pdf文件,则意味着您实际上正在打开一个新页面。为什么不发布一个表单,然后在新的选项卡或弹出窗口中显示响应,甚至在同一窗口中显示iframe?@Eggplant我是初学者,所以请告诉我如何使用iframe。在页面中放置一个iframe,给它一个名称
,然后将HTML表单的目标
设置为该名称。看看这个问题:@茄子谢谢它的工作!然而,如果有人知道如何通过javascript或php来实现这一点,那么代码仍然有一点问题,因此没有标记您的答案。我必须在同一页上显示pdf,问题是什么?我使用相同的代码在同一页上显示pdf,只需将
设置在要显示pdfI的位置,即可发现问题,即代码尝试从我的服务器获取xyz.pdf,但没有按照问题中的指定保存。数据指定标记中资源的url。因此,我在控制台404 not Found中遇到错误。您的意思是说php代码不生成pdf?还有一件事,如果它不工作,那么如何说“太好了!非常感谢”?很抱歉,实际上我没有删除Eggplant在评论中已经建议的我以前的代码逻辑,因此我的页面通过表单和ajax调用发布了两篇文章,其中表单文章工作正常。所以我很高兴,赶紧发表评论。我真的很感激你的帮助,希望你原谅我。