2012-08-15 100 views
3

我试图实现一个工具来将数据从研究网站导出为csv文件。在我download控制器,我有:在PHP和JavaScript中导出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); 
} 

,并从我的view,我做的:

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

download()被激发起来,当用户点击一个onclick='download()'按钮。 但是,我没有看到正在下载的文件,也没有看到错误消息。当我看着我的firebug控制台,我看到:

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

姓名,年龄,市菲利普,23日, “帕洛阿尔托” 约翰,30 ,“旧金山” Paul,20,“洛杉矶”

我在想什么? 谢谢

回答

3

你实际上并不想要AJAX请求。您想要将用户重定向到以下文件:

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

AJAX请求告诉服务器将数据发送回脚本的成功方法。由于它是一个下载,重定向不会让你离开页面,所以你可以使用这个方法而不会让你的用户感到困惑。

+0

对钱的权利! – cybertextron 2012-08-15 21:18:44