mysql — PHP экспорт xlsx файла с xlsxwriter / ajax /

У меня проблема с библиотекой xlsxwriter для PHP.
У меня есть база данных mysql, и я хочу загрузить данные из базы данных в файл 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");

Как? В чем проблема?
Большое спасибо

-1

Решение

Вы не можете просто загрузить файл через AJAX с помощью JavaScript и сохранить его на компьютере пользователя, так как это может привести к проблемам с безопасностью. Вам придется использовать обходные пути. Есть два основных варианта:

  • перенаправьте браузер на ваш URL для загрузки, желательно в качестве новой вкладки. Вы можете предоставить данные, закодированные в 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, такой как этот, которая предоставляет вам AJAX-подобную функцию загрузки.
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]