Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax在浏览器中内联显示PDF_Javascript_Php_Jquery_Ajax_Mpdf - Fatal编程技术网

Javascript 使用ajax在浏览器中内联显示PDF

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

我知道这个问题已经被不同的方式问过很多次了。但我仍然无法找到答案。我的意思是我没有找到一个恰当的描述性答案

我使用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 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的id

Ajax的全部目的是在后台执行某些操作,但如果要显示pdf文件,则意味着您实际上正在打开一个新页面。为什么不发布一个表单,然后在新的选项卡或弹出窗口中显示响应,甚至在同一窗口中显示iframe?@Eggplant我是初学者,所以请告诉我如何使用iframe。在页面中放置一个iframe,给它一个
名称
,然后将HTML表单的
目标
设置为该名称。看看这个问题:@茄子谢谢它的工作!然而,如果有人知道如何通过javascript或php来实现这一点,那么代码仍然有一点问题,因此没有标记您的答案。我必须在同一页上显示pdf,问题是什么?我使用相同的代码在同一页上显示pdf,只需将
设置在要显示pdfI的位置,即可发现问题,即代码尝试从我的服务器获取xyz.pdf,但没有按照问题中的指定保存。数据指定标记中资源的url。因此,我在控制台404 not Found中遇到错误。您的意思是说php代码不生成pdf?还有一件事,如果它不工作,那么如何说“太好了!非常感谢”?很抱歉,实际上我没有删除Eggplant在评论中已经建议的我以前的代码逻辑,因此我的页面通过表单和ajax调用发布了两篇文章,其中表单文章工作正常。所以我很高兴,赶紧发表评论。我真的很感激你的帮助,希望你原谅我。