douba9776 2019-06-05 16:36
浏览 100

使用ajax将表数据导出到php

I'm writing PHP code (in drupal) to export data to excel file using ajax i'm not receiving any error but file is not getting download when I click button to export to excel. But file getting download when i directly heat the url(from browser)

This is the ajax code

jQuery('.export-csv', context).once('export').click(function() {
console.log('test');

var role = 'teacher';

 /*get basepath*/
 var basepath = drupalSettings.path.baseUrl;
jQuery.ajax({
 type : 'GET',
url  : basepath + 'report-export/'+role,
    success : function (data) {
console.log('success');
},
error: function () {
console.log('error');
}
})
})

and php function in controller to download excel file

 public function exportToExcel($role)
    {
        $filename = "report.xls";       
        header("Content-Type: application/vnd.ms-excel");
        header("Content-Disposition: attachment; filename=\"$filename\"");
        $records = array(
        '0' => array('Name'=> 'user1', 'Status' =>'complete', 'Priority'=>'Low', 'Salary'=>'001'),
        '1' => array('Name'=> 'user2', 'Status' =>'inprogress', 'Priority'=>'Low', 'Salary'=>'111'),
        '2' => array('Name'=> 'user3', 'Status' =>'hold', 'Priority'=>'Low', 'Salary'=>'333'),
        '3' => array('Name'=> 'user4', 'Status' =>'pending', 'Priority'=>'Low', 'Salary'=>'444'),
        '4' => array('Name'=> 'user5', 'Status' =>'pending', 'Priority'=>'Low', 'Salary'=>'777'),
        '5' => array('Name'=> 'user6', 'Status' =>'pending', 'Priority'=>'Low', 'Salary'=>'777')
        );

$heading = false;
    if(!empty($records))
      foreach($records as $row) {
        if(!$heading) {
          // display field/column names as a first row
          echo implode("\t", array_keys($row)) . "
";
          $heading = true;
        }
        echo implode("\t", array_values($row)) . "
";
      }
        exit;
    }

though i m not getting error but file not getting downloading. and in ajax console also getting success message. and when i direct hit url as site.com/report-export/ file gets download

  • 写回答

1条回答 默认 最新

  • duanleixun2439 2019-06-05 16:54
    关注

    You are missing few header tags to make this work. This works for me, procedural style. Quick, hassle-free.

    form.php

     <a class="btn btn-default" href="download.php">Download Excelsheet</a>
    

    download.php

    <?php
    $file = '../path-to/filename.csv';//csv
    $file = '../path-to/filename.xls';//excel
    
    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');//csv
        header("Content-Type: application/xls");//excel
        header('Content-Disposition: attachment; filename="'.basename($file).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        readfile($file);
        exit;
    }
    ?>
    
    评论

报告相同问题?

悬赏问题

  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题