【问题标题】:DOMPDF not downloading file when using AJAX使用 AJAX 时 DOMPDF 不下载文件
【发布时间】:2017-11-04 10:06:52
【问题描述】:

我正在尝试在我的 Laravel 项目中使用 BarryVdh/DOMPDF 代码。 我用打印按钮制作了一个页面,带有

<a href="/print-facturen" class="btn btn-default printbtn">Print</a>

这是调用控制器函数:

   public function printFacturen(Request $request) {

        $facturen = Factuur::all();
        view()->share('facturen', $facturen);

        $pdf = PDF::loadView('pdf.facturen');
        return $pdf->download('invoice.pdf');
    }

这正在成功下载 PDF 文件。

我的路线是:

Route::get('/print-facturen', 'PrintController@printFacturen')->name('print_overzicht_facturen');

但是,我需要一个单选按钮的内容来填充我的 PDF。 所以我将我的 a href 更改为

<a href="#" class="btn btn-default printbtn">Print</a>

我添加了一个 jQuery 函数:

   $(".printbtn").click(function(e)
    {
        var option = $("input[name='factuur_selectie']:checked").val();

        $.ajax({
            type: 'POST',
            url: 'print-facturen',
            data: {"optionID": option}
        })
    });

而我的控制器变成了

   public function printFacturen(Request $request) {

        $option = $request->get('optionID');

        $facturen = Factuur::all();
        $searchFacturen = new \Illuminate\Database\Eloquent\Collection();

        foreach ($facturen as $factuur) {
            if ($option == 1) {
                $searchFacturen->add($factuur);
            }
            else if ($option == 2) {
                if ($factuur->voldaan == true) {
                    $searchFacturen->add($factuur);
                }
            }
            else if ($option == 3) {
                if ($factuur->voldaan == false) {
                    $searchFacturen->add($factuur);
                }
            }
        }
        view()->share('facturen', $searchFacturen);

        $pdf = PDF::loadView('pdf.facturen');
        return $pdf->download('invoice.pdf');
    }

我可以成功看到我的 optionID,但 PDF 文件不再被下载... :-(

当我收到一个 POST 错误时,我添加了这条路线:

Route::post('/print-facturen', 'PrintController@printFacturen')->name('print_overzicht_facturen');

在检查网络时,我看到了这个:

对不起,我还不能在这里张贴图片 :-( (https://user-images.githubusercontent.com/5870500/32404394-3555952c-c14f-11e7-82c3-2d000d1a2661.png)

我做错了什么?

最好的问候,

戴维

【问题讨论】:

    标签: ajax laravel pdf download dompdf


    【解决方案1】:

    你需要设置正确的http响应头:

    header('Content-Type: application/octet-stream; charset=utf-8');
    header('Content-Disposition: attachment; filename="'.$filename.'"');
    

    其他简单的选择是动态修改无线电点击获取链接,如:example.org/download?radio=1

    【讨论】:

    • 我应该在哪里(以及如何)设置这个标题?关于链接,不是点击我要打印的收音机;
    • 另外,如何在不添加这些行的情况下解释这与其他方式一起工作?
    • 您刚刚在 php 文件中设置的标头。||第二种详​​细方法是再次发出 GET 请求(在 jquery 中单击操作应将序列化单选选项设置为 url)
    猜你喜欢
    • 2014-10-26
    • 2014-12-28
    • 2015-06-01
    • 1970-01-01
    • 2019-01-22
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多