用PHP和JavaScript导出csv文件

我正在尝试实现一种工具,以将研究网站中的数据导出为csv文件.在我的下载控制器中,我有:

public function export(){
    $data = array(
          array('Name', 'Age', 'City'),
          array('Philippe', '23', 'Palo Alto'),
          array('John', '30', 'San Francisco'),
          array('Paul', '20', 'Los Angeles')
    );

    header('Content-type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=data.csv');

    $fp = fopen('php://output', 'w');
    foreach( $data as $line ) {
        fputcsv( $fp, $line );
    }
    fclose($fp);
}

从我的角度来看,我做到了:

function download() {
     $('#download').empty().html('<img src="<?php echo base_url();?>/images/loader.gif" />');
     $.post('<?php echo base_url();?>/index.php/download/export');
}

当用户单击带有onclick =’download()’的按钮时,就会启动download().
但是,我没有看到文件正在下载,也没有错误消息.当我查看Firebug控制台时,我看到:

200 OK 29ms jquery.min.js (line 4) HeadersPostResponseCookies

Name,Age,City Philippe,23,”Palo Alto” John,30,”San Francisco”
Paul,20,”Los Angeles”

我想念什么?
谢谢

解决方法:

您实际上不需要这里的AJAX请求.您要使用以下命令将用户重定向到文件:

window.location = '<?php echo base_url();?>/index.php/download/export';

AJAX请求告诉服务器将数据发送回脚本的成功方法.由于是下载,因此重定向不会使您离开页面,因此可以使用此方法而不会使用户感到困惑.

上一篇:php-在控制器方法中一次调用mkdir()


下一篇:php-Codeigniter视图中的非法字符串偏移错误