0

这是我的 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。任何想法将不胜感激。

4

3 回答 3

3

也许这不是对特定问题的答案,但是,这个问题是在第一次谷歌搜索时出现的,所以我想分享我在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();
  }
});
于 2020-05-28T09:33:36.503 回答
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.ini 中发布。

于 2013-03-16T20:01:18.407 回答
0

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

于 2013-03-16T19:00:39.447 回答