Codeigniter Ajax将数据发布到控制器导出的csv

时间:2019-05-13 12:26:44

标签: ajax codeigniter

我有一个包含用户列表的表,我想使用Codeigniter应用程序中的复选框保存多个记录,我使用jquery ajax将多行发送到我的控制器。在按钮上单击,我想从数据库中获取每个已检查用户的电子邮件,并将结果保存为CSV。

/ *我的脚本* /

$('#button').click(function(){

    var checkbox = $('.rows_checkbox:checked');
    if(checkbox.length > 0)
    {
        var checkbox_value = [];
        $(checkbox).each(function(){
            checkbox_value.push($(this).val());
        });
        $.ajax({
            url:"<?php echo base_url(); ?>backoffice/candidates/csv_all",
            method:"POST",
            data:{checkbox_value:checkbox_value},
            success:function()
            {
                alert('success');
            }
        })
    }
    else
    {
        alert('Select atleast one records');
    }
});

/ *控制器* /

public function csv_all()
{

    if($this->input->post('checkbox_value'))
    {
        $file_name = 'student_details_on_'.date('Ymd').'.csv';
        header("Content-Description: File Transfer");
        header("Content-Disposition: attachment; filename=$file_name");
        header("Content-Type: application/csv;");

        $id = $this->input->post('checkbox_value');
        for($count = 0; $count < count($id); $count++)
        {
            $student_data = $this->users_model->get_csv($id[$count]);
        }
        // file creation
        $file = fopen('php://output', 'w');

        $header = array("email");
        fputcsv($file, $header);
        foreach ($student_data->result_array() as $key => $value)
        {
            fputcsv($file, $value);
        }
        fclose($file);
        exit;
    }
}

/ ======模型==== /

public function get_csv($id)

{
    $this->db->select('email');
    $this->db->where('id', $id);
    $query = $this->db->get('users');
    if ($query->num_rows() > 0) {
        $query_rslt = $query->row_array();
        return $query_rslt['email'];
    }
    else { return FALSE; }
}

当我单击按钮时,我收到警报,但它不会生成csv文件

0 个答案:

没有答案