未使用 ajax 在 Codeigniter 中下载 Csv 文件
Csv file not downloaded in Codeigniter using ajax
我的实际问题是 ajax 成功后无法下载 CSV 文件
我的ajax方法是
$.ajax({
type: "POST",
url: "<?php echo site_url('reports/csvReports'); ?>",
data: { data: dates, studentPerData: studentPerData },
success: function (data) {},
});
控制器代码为
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;
}
试试你ajax成功
`$.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);
}
});`
function csvReports() {
//$studentPerData = $_POST['studentPerData'];
$list = $_REQUEST['data']; // check ur $_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]);
// print_r($header); exit(); /* check variabe $header is array or not
// $header = array('R1-col1','R1-col2');
fputcsv($output, $header); // the second var header must be array..
// check $list is Multidimensional array or not or not
/* $list = array (
array("Peter", "Griffin" ),
array("Glenn", "Quagmire")
); */
// use commented $list array array to debug ur code
foreach ($list as $row) {
fputcsv($output, $row);
}
fclose($output);
readfile($filename); // force file to download in browser
}
我的实际问题是 ajax 成功后无法下载 CSV 文件 我的ajax方法是
$.ajax({
type: "POST",
url: "<?php echo site_url('reports/csvReports'); ?>",
data: { data: dates, studentPerData: studentPerData },
success: function (data) {},
});
控制器代码为
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;
}
试试你ajax成功
`$.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);
}
});`
function csvReports() {
//$studentPerData = $_POST['studentPerData'];
$list = $_REQUEST['data']; // check ur $_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]);
// print_r($header); exit(); /* check variabe $header is array or not
// $header = array('R1-col1','R1-col2');
fputcsv($output, $header); // the second var header must be array..
// check $list is Multidimensional array or not or not
/* $list = array (
array("Peter", "Griffin" ),
array("Glenn", "Quagmire")
); */
// use commented $list array array to debug ur code
foreach ($list as $row) {
fputcsv($output, $row);
}
fclose($output);
readfile($filename); // force file to download in browser
}