2012-08-15 97 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