1

我需要从页面进行 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);
     }
 })
4

1 回答 1

3

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

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

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

$.ajax({

 type: "POST",
 url: {plink Tasks:tasksToExcel},
 data: ajaxData,
 success:function(data){
    $('#download').html(data);
     var zz=document.createElement('a');
     var data_type = 'data:application/vnd.ms-excel';
     zz.href ='htp://localhost/bengkel/backend/export/FileName.xls';
     zz.download='FileName'+'.xls';
     zz.click();
 }

})

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

于 2014-01-13T14:25:34.603 回答