未使用 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
        }