我有一个包含用户列表的表,我想使用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文件