Php TCPDF-AJAX-从AJAX调用下载文件而不将其保存到web服务器
我对Php TCPDF-AJAX-从AJAX调用下载文件而不将其保存到web服务器,php,jquery,ajax,pdf,tcpdf,Php,Jquery,Ajax,Pdf,Tcpdf,我对create_pdf.php页面进行了AJAX调用: $('body').on('click', '.PrintButtonWithClass', function (event) { var1 = $('#id1').val(); var2 = $('#id2').val(); dataString='var1='+var1+'&var2='+var2+'&pdf_name=PdfName&pdf_creator=myname';
create_pdf.php
页面进行了AJAX调用:
$('body').on('click', '.PrintButtonWithClass', function (event) {
var1 = $('#id1').val();
var2 = $('#id2').val();
dataString='var1='+var1+'&var2='+var2+'&pdf_name=PdfName&pdf_creator=myname';
$.ajax({
type: 'post',
url: '/path/to/createpdf/file/create_pdf.php',
data: dataString,
success: function (data) {
alert('success');
}
});
});
在create_pdf.php
中,我尝试使用此行下载文件:
$pdf->Output(str_replace(' ','_',utf8_decode($_POST['pdf_name'])).'.pdf', 'D');
我还尝试了FD
和I
参数,但没有成功,文件无法下载
如何强制下载创建的文件而不将其保存到Web服务器,也不将用户重定向到任何其他页面?我希望他保持在同一个页面上,浏览器会弹出一个PDF的(下载或预览对话框)。有什么办法吗
编辑:create_pdf.php正在等待POST变量。并使用它们为pdf创建HMTL。您可以尝试将表单提交到新窗口(如弹出窗口): 不要忘记从php发送内容类型标题:
header("Content-Type", "application/pdf");
编辑:
浏览器应显示您的pdf内容,并显示下载或打印选项。
代码没有经过测试,但我认为它可以满足您的要求 我找到了解决问题的办法 我在另一个
AJAX
调用中执行了AJAX
调用
第一个AJAX
调用在webServer上创建文件,并在新窗口中打开该文件
在他的成功参数中,我执行以下操作:
第二个AJAX
调用从服务器删除文件
$.ajax({
type: 'post',
url: '/path/to/create_pdf.php',
data: dataString,
success: function (data) {
window.open(
data,
'_blank' // <- This is what makes it open in a new window.
);
window.setTimeout(function () {
dataString2 = 'Downloaded=true';
$.ajax({
type: 'post',
url: '/path/to/create_pdf.php',
data: dataString2,
success: function (data) { alert(data); }, // handler if second request succeeds
});
}, 5000);
},
});
$.ajax({
键入:“post”,
url:“/path/to/create_pdf.php”,
数据:dataString,
成功:功能(数据){
打开窗户(
数据,
“_blank”/使用此答案回答我的类似请求:
我需要(1)在另一个窗口中获取并显示pdf;以及
(2) 获取CSV文件并提示保存
页面()上的每个按钮都有2个简单的按钮。下面是代码:
function getCSVText(evt) {
if (currentChecklistCountry) {
var form = $('<form method="post" action="../php/sendCSV.php?country=' + currentChecklistCountry + '"></form>');
$('body').append(form);
form.submit();
form.remove();
}
else checklistCountryButton.classList.add("needsAttention");
}
function openChecklistPage() {
if (!currentChecklistCountry) {
checklistCountryButton.innerHTML = "Select Country";
checklistCountryButton.classList.add("needsAttention");
return;
}
if (gNumDays == undefined) gNumDays = 12;
vars = "?country=" + currentChecklistCountry;
vars += "&num_days=" + gNumDays;
vars += "&line_nos=" + lineNumbers.checked;
vars += "&left_check=" + leftCheck.checked;
vars += "&endemics=" + showEndemics.checked;
vars += "&sci_names=" + !sciNames.checked;
vars += "&italics=" + !italics.checked;
window.open( '../php/makePDF.php' + vars, '_blank' );
}
函数getCSVText(evt){
如果(currentChecklistCountry){
变量形式=$('');
$('body')。追加(表格);
表单提交();
form.remove();
}
else checklistcrybutton.classList.add(“needsatention”);
}
函数openChecklistPage(){
如果(!currentChecklistCountry){
checklistCountryButton.innerHTML=“选择国家”;
checklistCountryButton.classList.add(“needsAttention”);
返回;
}
如果(gNumDays==未定义)gNumDays=12;
vars=“?country=“+currentChecklistCountry;
变量+=”&num_days=“+gNumDays;
vars+=”&行号=“+lineNumbers.checked;
vars+=”&left_check=“+leftCheck.checked;
vars+=“&endemics=“+showEndemics.checked;
vars+=”&sci_names=“+!sciNames.checked;
vars+=“&italics=“+!italics.checked;
open('../php/makePDF.php'+vars,“\u blank”);
}
因此getCSVText()方法使用附加的临时表单下载一个文件,然后立即删除,以及openChecklistPage()成功打开另一个包含pdf文件的浏览器窗口。该pdf文件从未保存在服务器上。CSV文件已存储在服务器上并刚被检索。也许您可以修改代码以满足自己的需要。我不提交任何表单,我只有一个“打印”按钮,单击该按钮时会调用AJAX,不提交任何表单。我只获取所有信息我需要当前页面中的信息并将其发送到create_pdf.phpy您可以创建一个动态表单,可以在按下按钮时提交。创建如下输入:
var fields=$(“”,{name:'var1',type:'text'});$(“”,{target:'.\u foo',method:'post'})。追加(字段)。提交();
请查看此页面:。它主要恢复到我以前的评论。忘记提到您必须在“按钮单击回调”中添加表单创建代码。
$.ajax({
type: 'post',
url: '/path/to/create_pdf.php',
data: dataString,
success: function (data) {
window.open(
data,
'_blank' // <- This is what makes it open in a new window.
);
window.setTimeout(function () {
dataString2 = 'Downloaded=true';
$.ajax({
type: 'post',
url: '/path/to/create_pdf.php',
data: dataString2,
success: function (data) { alert(data); }, // handler if second request succeeds
});
}, 5000);
},
});
function getCSVText(evt) {
if (currentChecklistCountry) {
var form = $('<form method="post" action="../php/sendCSV.php?country=' + currentChecklistCountry + '"></form>');
$('body').append(form);
form.submit();
form.remove();
}
else checklistCountryButton.classList.add("needsAttention");
}
function openChecklistPage() {
if (!currentChecklistCountry) {
checklistCountryButton.innerHTML = "Select Country";
checklistCountryButton.classList.add("needsAttention");
return;
}
if (gNumDays == undefined) gNumDays = 12;
vars = "?country=" + currentChecklistCountry;
vars += "&num_days=" + gNumDays;
vars += "&line_nos=" + lineNumbers.checked;
vars += "&left_check=" + leftCheck.checked;
vars += "&endemics=" + showEndemics.checked;
vars += "&sci_names=" + !sciNames.checked;
vars += "&italics=" + !italics.checked;
window.open( '../php/makePDF.php' + vars, '_blank' );
}