这是我的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。任何想法将不胜感激。
答案 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();
}
});