PHP导出XLSX文件,xlsxwriter / AJAX /

问题描述 投票:-1回答:1

我有xlsxwriter库PHP的一个问题。我有一个MySQL数据库,我想下载从数据库DATAS与按钮的Excel文件。如果我粘贴到网页浏览器栏中的URL,它生成并下载正确的Excel文件(链接https://www.example.com/inc/service.php?action=downloadXls&gestione=2“的例子),但如果我用AJAX调用

 $("#frmfileima").submit(function(e){
     e.preventDefault();                
      var fdate = $('#firstdate').val();
      var ldate = $('#lastdate').val();                 
        $.ajax({
        method: "GET",
        url: "inc/service.php?action=downloadXls&gestione=4",
        data: {fdate: fdate, ldate: ldate},
        });                                 
      });

没啥事儿。在Chrome中预览我只能看到这个代码

PKDN   docProps/PKDNÈì«docProps/app.xmlÏ1Â0àÝ_Q²ÛTIÓAqv¨î!¹j ¹É)í¿7"ØÝí>Þ©n
cõ=a+6u#*@KÎã½×þ¼Þ*³AgFBhÅYtz¥."$ö«"`nÅ9¤ÌöÁäºÔXR0\bºKoáDöYnf'ab@n øÿ:²}ùÖϱxZõÄfì}Ý(¹u¤
ÎZÉåZ>ÓoPKDN4îWp6DdocProps/core.xmlmÁNÃ0Dï|Eä{b'-U±ôê   $$@ܽ´Ä±ìmÓþ=NÒõ¶ã}Z{/öuíÀyݤ #Ù(mÖy]-ã9<
£DÕ(È<Y7¹´\6]cÁ¡ñ\Úl-§ÔË
ÔÂ'!aùÕ¸Z`nM­?b

我认为这是该文件的xlsx代码源。

在service.php我尝试了所有类型头

header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=".XLSXWriter::sanitize_filename($filename)."");
header("Pragma: no-cache");
header("Expires: 0");

怎么样?问题出在哪儿?多谢

php mysql ajax excel xlsxwriter
1个回答
0
投票

你不能只是使用JavaScript通过AJAX下载文件并将其保存到用户的计算机,因为这将伴随着安全问题。你将不得不使用的变通办法。一般有两种选择:

  • 浏览器重定向到您的下载网址,最好是作为一个新的标签。您可以提供这样的URL编码的数据:
$("#frmfileima").submit(function(e) {
    e.preventDefault();
    var fdate = $('#firstdate').val();
    var ldate = $('#lastdate').val();
    window.open('inc/service.php?action=downloadXls&gestione=4&fdate=' + encodeURIComponent(fdate) + '&ldate=' + encodeURIComponent(ldate), '_blank');                               
});
  • 如果你想在你的下载更多的控制,你可以使用一个jQuery插件,如this one,它为您提供了一个AJAX般的下载功能。
© www.soinside.com 2019 - 2024. All rights reserved.