【问题标题】:Display pdf blob with jquery ajax使用 jquery ajax 显示 pdf blob
【发布时间】:2013-03-16 18:39:53
【问题描述】:

这是我的 jQuery: $( 文档 ).ready(function() { 变量 instrID; 变种猫;

    $(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。任何想法将不胜感激。

【问题讨论】:

    标签: php jquery ajax pdf


    【解决方案1】:

    也许这不是特定问题的答案,但是,这个问题在第一次谷歌搜索时出现,所以我想分享我下载 pdf 的方法,当它是 blob 数据时。

    $.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();
      }
    });
    

    【讨论】:

      【解决方案2】:

      您还没有为instrID 设置值,也没有为输入进行清理。

      无论如何,您可以将 pdf 嵌入到页面中,而不是使用 ajax

      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 中发布。

      【讨论】:

      • 两者:$instrumentID = $_POST['InstrumentID']; $category = $_POST['catView'];应该是 $instrumentID = $_GET['InstrumentID']; $category = $_GET['catView'];
      • @user908759 是的,变化是从 ajax 发布请求到嵌入对象的获取请求。
      • 我将帖子更改为gets,但仍然没有运气。还有另一种使用 php、mysql 和 jquery 显示 pdf blob 的方法吗?我一直在疯狂地寻找,但没有找到太多帮助。不过还是谢谢你。
      • 感谢您的帮助,我刚刚想通了...检查我的新答案
      【解决方案3】:

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

      【讨论】:

      • 我猜 iframe 会进入我的 div。你有例子吗?
      • 没有。我不使用 iframe。 google上应该有很多例子。
      猜你喜欢
      • 2016-09-13
      • 2019-04-19
      • 2013-01-11
      • 2022-10-20
      • 2016-11-25
      • 2020-02-20
      • 1970-01-01
      • 2015-09-28
      • 2013-03-04
      相关资源
      最近更新 更多