Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AJAX请求生成PDF_Javascript_Php_Ajax_Laravel_Pdf - Fatal编程技术网

Javascript 使用AJAX请求生成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

我使用的是Laravel5.4,我正在尝试使用SnappyPDF生成PDF下载

我之所以尝试这样做,是因为我可以将表单数据提交到PDF,而无需重新加载页面

这是我的刀片模板:

<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);