【问题标题】:Create file from AJAX response data and force download从 AJAX 响应数据创建文件并强制下载
【发布时间】:2013-09-22 06:51:23
【问题描述】:

我需要从页面进行 AJAX 调用,将一些 JavaScript 数据发送到 PHP 文件,该文件会根据该数据创建一个文件。然后我希望用户下载此文件。

那么,是否可以通过 AJAX 请求强制下载由 PHP(在我的情况下特别是 PHPExcel)创建的文件?

下面显示的代码还没有发送任何 JavaScript 数据,但会生成一个文件。

这是我的 PHP 脚本,它使用 PHPExcel 创建一个文件:

public function renderTasksToExcel($tasksData){


    $objPHPExcel = new PHPExcel();

    // Set properties
    $objPHPExcel->getProperties()->setCreator("TRW");
    // ...

    // Add some data

    $objPHPExcel->setActiveSheetIndex(0);
    $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');
    // ...

    // Rename sheet
    $objPHPExcel->getActiveSheet()->setTitle('Simple');


    // Save Excel 2007 file
    $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
    $file = '/export.' . date('Y-m-d-H-i-s').'.xlsx';
    $objWriter->save($file);

    // hotovo
   return $this->sendResponse(new FileResponse($file));
}

这是 AJAX 调用:

$.ajax({
     type: "POST",
     url: {plink Tasks:tasksToExcel},
     data: ajaxData,
     success:function(data){
        $('#download').html(data);
     }
 })

【问题讨论】:

    标签: ajax download phpexcel


    【解决方案1】:

    和我的一样。但我已经解决了这个问题,试试这个: 在你的 php 中使用它:

    $objWriter->save('export/FileName.xls');

    并在您的 ajax 调用中使用它:

    $.ajax({

     类型:“POST”,
     网址:{plink 任务:tasksToExcel},
     数据:ajaxData,
     成功:功能(数据){
        $('#download').html(数据);
         var zz=document.createElement('a');
         var data_type = '数据:应用程序/vnd.ms-excel';
         zz.href ='htp://localhost/bengkel/backend/export/FileName.xls';
         zz.download='文件名'+'.xls';
         zz.click();
     }
    

    })

    简单的概念,ajax不能下载。然后,保存 *xls 文件,然后用 JS 下载该文件。 对不起,我是初级程序员,我的英语不好.. 希望这对你有帮助,祝你好运:)

    【讨论】:

      猜你喜欢
      • 2016-11-26
      • 2018-11-08
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-16
      • 2020-11-15
      相关资源
      最近更新 更多