Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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 Laravel snappy推送PDF下载_Javascript_Php_Ajax_Laravel_Pdf Generation - Fatal编程技术网

Javascript Laravel snappy推送PDF下载

Javascript Laravel snappy推送PDF下载,javascript,php,ajax,laravel,pdf-generation,Javascript,Php,Ajax,Laravel,Pdf Generation,我正在使用Laravel/Jquery和barryvdh/laravelsnappy从数据库数据动态创建pdf 在控制器中,我有: if ($request->ajax()) { $document = Document::url($id)->first(); $pdf = PDF::loadView('app.documents.whitepapers.pdf', compact('document')); return $pdf->download(

我正在使用Laravel/Jquery和barryvdh/laravelsnappy从数据库数据动态创建pdf

在控制器中,我有:

if ($request->ajax())
{
    $document = Document::url($id)->first();
    $pdf = PDF::loadView('app.documents.whitepapers.pdf', compact('document'));
    return $pdf->download('filename.pdf');
    // return response()->send($pdf->download('filename.pdf'), 200, $headers);
}
如何将此PDF推送到浏览器,以便下载


当我在没有Jquery的情况下运行时,它工作得非常好。之所以使用Jquery函数,是因为我使用了一个带有表单的模式来收集个人数据,然后才能开始下载。这有ajax验证。

您将无法通过JavaScript将文件作为常规下载。为了向用户显示下载提示,您需要在工作流中执行额外的步骤

我建议采用以下工作流程:

  • 用户提交模式表单
  • 表单通过AJAX进行验证。如果验证通过,则响应URL以下载用户的PDF,而不是PDF本身
  • 您的JavaScript将用户重定向到此URL。请注意,这是一个重定向,而不是另一个AJAX请求(请参阅)
  • 当用户访问该URL时,您可以使用原始问题中提供的代码片段交付PDF。此代码段适当设置响应的
    内容配置
    ,强制在用户浏览器中显示下载提示

  • 如果需要为每个用户自定义PDF生成,请确保在步骤4中包含用户ID(或其他标识信息)。

    您目前看到的行为是什么,当使用您发布的代码时?我在de javascript控制台中看到PDF中的二进制数据,我认为它足以推送结果,但事实并非如此。我必须在jQueryAjax的“成功”中做些什么来推动结果吗?有一个解决方案可以帮助您解决缺少的链接。这个答案对我不起作用。