无法使用JQuery AJAX get请求下载Pdf/Excel,某些数据随get请求一起发送

无法使用JQuery AJAX get请求下载Pdf/Excel,某些数据随get请求一起发送,jquery,ajax,laravel-5,mpdf,Jquery,Ajax,Laravel 5,Mpdf,我正试图通过GET/POST请求向服务器发送一些数据 然后服务器准备一个PDF(使用mpdf库)并将其发送回客户端 发送带有数据的GET/POST请求的前端代码如下所示 $("#edit_setting").click(function () { $.ajax({ url: "http://localhost:8000/get_pdf", type: "POST", data: {

我正试图通过GET/POST请求向服务器发送一些数据

然后服务器准备一个PDF(使用mpdf库)并将其发送回客户端

发送带有数据的GET/POST请求的前端代码如下所示

$("#edit_setting").click(function () {
        $.ajax({
            url: "http://localhost:8000/get_pdf",
            type: "POST",
            data: {
                data : {
                    "abhinav" : "kumar keshari"
                }
            },
            headers: {
                'Accept': "application/json",
                'Authorization': 'Bearer ' + getCookie(ACCESS_TOKEN),
            },
            success: function (data, textStatus, request) {
                let w = window.open('about:blank');
                w.document.open();
                w.document.write(data);
                w.document.close();
            },
            error: function (XMLHttpRequest, data) {
                console.log("something went wrong.");
                console.log(data);
                console.log(XMLHttpRequest.status);
                console.log(XMLHttpRequest.responseJSON);
            }
        });
    });
在服务器端,控制器发送PDF

class DownloadPdfController
{
    public function store(Request $request){
        $data_received = $request->data;
        error_log(print_r($data_received,true));
        $mpdf = new \Mpdf\Mpdf();

        $mpdf->Bookmark('Start of the document');
        $mpdf->WriteHTML('<div>Section 1 text</div>');
        return $mpdf->Output();

    }
}

类下载PDFController
{
公共函数存储(请求$Request){
$data\u received=$request->data;
错误日志(打印($data\u received,true));
$mpdf=new\mpdf\mpdf();
$mpdf->Bookmark(“文档的开始”);
$mpdf->WriteHTML(“第1节文本”);
返回$mpdf->Output();
}
}
服务器发送的pdf被捕获在AJAX成功回调的数据变量中

我希望在新窗口中打开响应(存储在数据变量中),以便开始下载过程。但这是行不通的。相反,浏览器加载的是一堆胡言乱语。

如果不是发出AJAX请求,而是使用浏览器搜索选项卡发出get请求。PDF下载很好

这很有效

$.ajax({
        url: "http://localhost:8000/get_excel",
        type: "POST",
        data: {data : list_of_tables},
        dataType: 'binary',
        xhrFields: {
            'responseType' : 'blob'
        },
        headers: {
            'Accept': "application/json",
            'Authorization': 'Bearer ' + getCookie(ACCESS_TOKEN),
        },
        success: function (data, textStatus, request) {
            alert("success in fetching data");
            let url = URL.createObjectURL(data);
            let $a = $('<a />', {
                'href': url,
                'download': 'document.xlsx',
                'text': "click"
            }).hide().appendTo("body")[0].click();

            // URL.revokeObjectURL(url);

        },
        error: function (XMLHttpRequest, data) {
            console.log("error in show_history");
            console.log(data);
            console.log(XMLHttpRequest.status);
            console.log(XMLHttpRequest.responseJSON);
        }
    });

$.ajax({
url:“http://localhost:8000/get_excel",
类型:“POST”,
数据:{data:list_of_tables},
数据类型:“二进制”,
xhrFields:{
“responseType”:“blob”
},
标题:{
“接受”:“应用程序/json”,
“授权”:“承载人”+getCookie(访问令牌),
},
成功:功能(数据、文本状态、请求){
警报(“获取数据成功”);
设url=url.createObjectURL(数据);
设$a=$(“”{
“href”:url,
“下载”:“document.xlsx”,
“文本”:“单击”
}).hide().appendTo(“正文”)[0]。单击();
//revokeObjectURL(URL);
},
错误:函数(XMLHttpRequest,数据){
日志(“显示历史记录中的错误”);
控制台日志(数据);
日志(XMLHttpRequest.status);
log(XMLHttpRequest.responseJSON);
}
});