Javascript 使用ajax生成PDF并显示为随机字符串?

Javascript 使用ajax生成PDF并显示为随机字符串?,javascript,php,jquery,ajax,pdf,Javascript,Php,Jquery,Ajax,Pdf,对不起,我是新手,但我就是这样。不管怎么说,我正在尝试编写一个如下流程的代码: 用户从数据库中进行查询 结果显示在带有jQuery UI的模式窗口中 有一个选项可以在模式窗口中以PDF格式查看此文件 Ajax将获取html并将其发送到pdfajax.php,以使用TCPDF创建PDF Ajax将返回PDF结果 我试过了,但我可能在第3步到第5步上绊倒了。我所能确定的是,我可以通过Ajax传递所需的html代码,如果我不尝试将其打印为PDF格式,而只是将其作为PHP进行响应,那么它就可以工作了。所

对不起,我是新手,但我就是这样。不管怎么说,我正在尝试编写一个如下流程的代码:

用户从数据库中进行查询 结果显示在带有jQuery UI的模式窗口中 有一个选项可以在模式窗口中以PDF格式查看此文件 Ajax将获取html并将其发送到pdfajax.php,以使用TCPDF创建PDF Ajax将返回PDF结果 我试过了,但我可能在第3步到第5步上绊倒了。我所能确定的是,我可以通过Ajax传递所需的html代码,如果我不尝试将其打印为PDF格式,而只是将其作为PHP进行响应,那么它就可以工作了。所以我似乎只停留在第五步

为了进行实验,我只是想显示一个简单的PDF文件,上面写着“嗨”,而不需要输入我现在注释掉的变量

结果很糟糕:

我想我错过了在通过Ajax之前清理数据的函数的使用?但是这个函数是什么呢?或者它真的存在,而这只是一个毫无意义的努力

以下是HTML:

    <div class="dialog-form" title="Query Dialog">
        <br />
        <div id="query_result"></div>
        <br />
    </div>
以及pdfajax.PHP中的PHP

<?php

//$htmlp = $_POST['html'];

//echo '<iframe id="query_result" srcdoc="',$htmlp,'" seamless="true"></iframe>';


require_once 'tcpdf/tcpdf.php';

$method = $_SERVER['REQUEST_METHOD'];

if(strtolower($method) == 'post'){

$pdf = new TCPDF();
$pdf->AddPage();

$html = <<<EOD
Hey
EOD;

$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
$pdf->Output('example_001.pdf', 'I');

}

?>

并且对ajax文件没有任何更改。我需要一个如何进行的提示?我根本不知道如何操作iframe标记,互联网教程似乎也帮不上我的理解。

使用并显示pdf。正如@SubashSelvaraj所建议的,您可以返回pdf文件的链接,然后在模式中创建iframe,并将src设置为pdf链接。我实际上对此一无所知。一旦生成pdf,我不知道它的链接。还是仅仅是pdfajax.php?因为我的概念是,要在html中使用iframe,我必须先下载生成的pdf,然后在iframe的src中引用它。我想我可能错了。有没有一种方法可以生成一个虚拟链接,我不需要把它下载到服务器上,我该怎么做呢。。。通过预先在图像中指定src标记,基本上不对返回的数据做任何处理。虽然现在我的问题是如何将html从jquery移动到pdfajax文件,但我以前可以移动它,但现在它似乎作为GET方法返回,即使我使用的是$.post方法
<?php

//$htmlp = $_POST['html'];

//echo '<iframe id="query_result" srcdoc="',$htmlp,'" seamless="true"></iframe>';


require_once 'tcpdf/tcpdf.php';

$method = $_SERVER['REQUEST_METHOD'];

if(strtolower($method) == 'post'){

$pdf = new TCPDF();
$pdf->AddPage();

$html = <<<EOD
Hey
EOD;

$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
$pdf->Output('example_001.pdf', 'I');

}

?>
<div class="dialog-form" title="Query Dialog">
    <br />
    <div id="query_result"></div>
    <iframe src="pdfajax.php" id="report_result"></iframe>
    <br />
</div>
    $(".dialog-form").dialog({
    autoOpen: false,
    modal: true,
    draggable: true,
    resizable: true,
    width: 500,
    height: "auto",
    dialogClass: "no-close",
    buttons: {
        "PDF": function(){
            var html = $('#query_result').html();

            $.post('pdfajax.php',
                {
                    html: $('#query_result').html()
                },
                function( data ){
                    //$('#report_result').( data );
                    $('#report_result').prop('src', 'pdfajax.php');
                }
            );

            //alert(html);
        },
        "Close": function() {
            $(this).dialog("close");
        }
    }
});