我对于PHP的xlsxwriter库有问题。 我有一个mysql db,我想用一个按钮从excel文件中的db下载数据。 如果我将网址粘贴到Web浏览器栏中,它将正确生成并下载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");
如何?问题出在哪里? 非常感谢
答案 0 :(得分:0)
您不能仅使用JavaScript通过AJAX下载文件并将其保存到用户的计算机,因为这会带来安全问题。您必须使用变通办法。有两个常规选项:
$("#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');
});