使用jquery ajax显示pdf blob

时间:2013-03-16 18:39:54

标签: php jquery ajax pdf

这是我的jQuery:     $(document).ready(function(){         var instrID;         var cat;

    $(window).load(function(){

    });

            $.post('ajax.php', {InstrumentID: instrID, catView: "pdf"}, function(data){

            $('#displayPDF').append("<php> header('Content-type: application/pdf') </php>");
            $('#displayPDF').append("<php> echo("+ data +") </php>");
        });

这是我的ajax或ajax.php:

<?php

include '../include/xxxxx.php';

$instrumentID = $_POST['InstrumentID'];
$category = $_POST['catView'];


$sql = "SELECT * FROM `xxxxx` WHERE `InstrumentID` = '" . $_POST['InstrumentID'] . "'";


$results = mysql_query($sql);

    if($category == "pdf")
{
    header("Content-type: application/pdf");
    echo (mysql_result($results, 0, 'Instrument'));
}
?>

这是我的div displayPDF它是空的:

<div id="displayPDF">

</div>

jQuery和div在同一个php文件中。我想在点击事件发生的同一页面中显示pdf。除了获取pdf之外,一切正常。当pdf被回显到div时,它就会以一堆字符的形式返回。我试图显示的pdf小于1 mb。任何想法将不胜感激。

3 个答案:

答案 0 :(得分:2)

您尚未为instrID设置值,也没有为输入进行消毒。

无论如何使用ajax而不是使用ajax,你只需将pdf嵌入页面

即可
var source = 'ajax.php?InstrumentID='+encodeUriComponent(instrID)+'&catView=pdf';
$('#displayPDF').append('<object data="'+source+'" type="application/pdf">'+
                        '<embed src="'+source+'" type="application/pdf"/></object>');

然后使用$_GET而不是在你的php中发帖。

答案 1 :(得分:0)

我认为您不能以这种方式显示PDF内联。尝试切换到iframe - 应该可行。这是为你的ajax.php设置iframe的位置。

答案 2 :(得分:0)

也许这不是对特定问题的答案,但是,这个问题最初出现在Google搜索中,所以我想分享一下我在下载blob数据时使用pdf的方法。

$.ajax({
  url: 'someurl',
  method: 'get',
  data: { param1: value1, param2: value2 },
  xhr: function() {
    const xhr = new XMLHttpRequest();
    xhr.responseType= 'blob'
    return xhr;
  },
  success: function (blob) {
    const link=document.createElement('a');
    link.href=window.URL.createObjectURL(blob);
    link.download="my-pdf-file-name";
    link.click();
  }
});