my actual problem is CSV file not downloading after ajax success My ajax method is
$.ajax({
type: "POST",
url: "<?php echo site_url('reports/csvReports'); ?>",
data: { data: dates, studentPerData: studentPerData },
success: function (data) {},
});
and the controller code is
function csvReports() {
//$studentPerData = $_POST['studentPerData'];
$list = $_REQUEST['data'];
$filename = 'studentreport.csv';
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=$filename");
$output = fopen("php://output", "w");
$header = array_keys($list[0]);
fputcsv($output, $header);
foreach ($list as $row) {
fputcsv($output, $row);
}
fclose($output);
return $output;
}
Try you're ajax success
`$.ajax({
url: URL",
type: 'POST',
data: formData,
async: false,
contentType: false,
processData: false,
success: function (data)
{
var isHTML = RegExp.prototype.test.bind(/(<([^>]+)>)/i);
if(!isHTML(data)){
var downloadLink = document.createElement("a");
var fileData = ['\ufeff'+data];
var blobObject = new Blob(fileData,{
type: "text/csv;charset=utf-8;"
});
var url = URL.createObjectURL(blobObject);
downloadLink.href = url;
downloadLink.download = "data.csv";
/*
* Actually download CSV
*/
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
TRENDIN.ShowError("Status: " + textStatus); alert("Error: " + errorThrown);
}
});`