Javascript 使用AJAX请求生成PDF
我使用的是Laravel5.4,我正在尝试使用SnappyPDF生成PDF下载 我之所以尝试这样做,是因为我可以将表单数据提交到PDF,而无需重新加载页面 这是我的刀片模板:Javascript 使用AJAX请求生成PDF,javascript,php,ajax,laravel,pdf,Javascript,Php,Ajax,Laravel,Pdf,我使用的是Laravel5.4,我正在尝试使用SnappyPDF生成PDF下载 我之所以尝试这样做,是因为我可以将表单数据提交到PDF,而无需重新加载页面 这是我的刀片模板: <div> Download a PDF: <button type="button" class=" btn-success btn-sm" id="js-download" >Download</button> </div> 这是我的控制器功能: public
<div>
Download a PDF: <button type="button" class=" btn-success btn-sm" id="js-download" >Download</button>
</div>
这是我的控制器功能:
public function generatePDF(Request $request)
{
$pdf = PDF::loadView('pdf.download', $request);
return $pdf->download('download.pdf');
}
这是我的.js文件:
$(document).on("click", "#js-download", function(e) {
e.preventDefault();
$.ajax({
url: '/download',
data: $("#js-pdf-form").serialize(),
success:function(data) {
console.log(data)
},
error:function() {
}
});
});
如果我通过浏览器中的地址栏调用路由,PDF可以工作,但是如果我单击按钮并尝试AJAX请求,它会失败,但是它会记录似乎是PDF输出的内容
任何帮助都将不胜感激。更换:
return $pdf->download('download.pdf');
为此:
$pdf_file = 'download.pdf';
$pdf_path = 'public/pdf/'.$pdf_file;
$pdf->save($pdf_path);
return asset($pdf_path);
别忘了创建public/pdf文件夹…你是说ajax会返回一个成功的返回代码吗?您还应该在错误回调中添加日志,这在开发过程中非常有帮助。我对下载没有太多研究,但根据我自己的常识,我不得不说AJAX不支持下载,它只检索数据。现在,如果它真的成功了,并且你得到了pdf数据,你可以将数据放在一个元素或其他东西中(此时我不知道下载是如何工作的,所以我只能告诉你),如果它仍然不工作,返回$pdf_路径,在ajax成功时执行以下操作:window.location=data;
$pdf_file = 'download.pdf';
$pdf_path = 'public/pdf/'.$pdf_file;
$pdf->save($pdf_path);
return asset($pdf_path);