fputcsv через js после вызова не скачивается - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь сделать ссылку JS POST на другой файл php, чтобы вызвать загрузку CSV.Все происходит правильно - за исключением загрузки CSV.Я могу видеть данные CSV в DevTools в Chrome, но CSV не загружается.

Ссылка имеет цель _blank. Я не знаю, куда поместить _blank в JS.

Я знаю, что могу легко сделать это с помощью GET (без JS), но я бы хотел сделать это с помощью POST.

PHP:

<a id="data-download" target="_blank" data-toggle="tooltip" data-placement="left" title="Export to Excel">

JS:

$("#data-download").on("click", function(e){
$.post("XL.php", { e: "<?php echo $e?>", time: "2pm" } );  //Your values here..
});

Обработчик форм:

$filename = "Ensemble-D$div$ensabbr.csv";
$fp = fopen('php://output', 'w');
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
#header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);

// output the column headings
fputcsv($fp, array("filename.csv"));
fputcsv($fp, array('column','headings'));

$query = "SELECT a.fields, b.fields FROM entries a, other b ORDER BY something";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_row($result)) {
    fputcsv($fp, $row);
}

1 Ответ

1 голос
/ 13 марта 2019

Чтобы использовать POST и загрузить файл, одну вещь, которую вы можете сделать, это создать html-форму и заставить вашу ссылку отправить ее.

<form action=XL.php method=post id=export target=_blank>
<input type=hidden name=e value=...etc
</form>

$("#data-download").on("click", function(e){ $('#export').submit() });

Вы даже можете создать форму в JavaScript, чтобы не беспокоиться о дубликатах идентификаторов

...