3

研究 Web サイトからデータをファイルとしてエクスポートするツールを実装しようとしていcsvます。私のdownloadコントローラーには、次のものがあります。

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 歳、「サンフランシスコ」 ポール、20 歳、「ロサンゼルス」

私は何が欠けていますか?ありがとう

4

1 に答える 1

3

ここでは、実際には AJAX リクエストは必要ありません。ユーザーを次のファイルにリダイレクトします。

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

AJAX リクエストは、データをスクリプトの success メソッドに送り返すようにサーバーに指示しています。これはダウンロードであるため、リダイレクトによってページを離れることがないため、ユーザーを混乱させることなくこの方法を使用できます。

于 2012-08-15T21:06:16.200 に答える