【问题标题】:ajax variable is not passing to controller using codeigniterajax 变量未使用 codeigniter 传递给控制器
【发布时间】:2017-12-13 11:31:07
【问题描述】:

我正在将我的时间表转换为 CSV 文件。我需要使用user_idstart_dateend_date 对其进行过滤。过滤后,将整个文件转换为 CSV 文件,但不包括过滤。

点击下载时,我已使用 AJAX 将 start_dateend_date 发送到我的控制器。但是,我只得到这些数据的空值。您能帮我并告诉我为什么我的控制器中没有正确打印数据吗?

点击下载的AJAX代码为:

    function get_csv()
     {
        var user_id=$('#user').val();
        var start_date=$('#start_date').val();
        var end_date=$('#end_date').val();

        $.ajax({
            type: "POST",
            url: "<?php echo site_url();?>/timesheetmanager/timesheet/getcsv",
            data: '&start_date='+start_date+'&end_date='+end_date,
            success: function(data){
                document.location.href = '<?php echo site_url('timesheetmanager/timesheet/getcsv/'); ?>'+'/'+user_id;
            }
            });
     }

控制器:

    function getcsv($user_id)
        {       
            $userid=$user_id;   
            $start_date=$this->input->post('start_date');
            $end_date=$this->input->post('end_date');
            $this->db->where('id',$userid);
            $user_query=$this->db->get('users');
            $user_result=$user_query->row();
            if($userid != "0")
                {
                    $this->db->where('emp_id',$userid);
                }
                if(($start_date != 'Start Date')&& ($end_date != 'End Date'))
                    {
                        $startdate=@date('Y-m-d',strtotime($this->input->post('start_date')));
                        $enddate=@date('Y-m-d',strtotime($this->input->post('end_date')));
                        $datequery= $this->db->where("update_date BETWEEN '$startdate' and '$enddate'");        
                    }
            $header_name=array('TASK NAME','DESCRIPTION','HOURS SPEND','DATE');
            $this->db->order_by('id','desc');
            $query = $this->db->get('timesheet');
            $this->db->where('emp_id',$userid);
            $getRes = $query->result_array();
            $filename = ''.$name.date('Y-m-d').'.csv';
            header('Content-Type: text/csv; charset=utf-8');
            header('Content-Type: application/vnd.ms-excel'); 
            header("Content-Disposition: attachment; filename=$filename");
            $finalData[]=$user_result->name;
            $output = fopen('php://output', 'w');
            fputcsv($output,$header_name);
            $finalData = array();
            $fp = fopen('php://output','w');
            foreach( $getRes as  $data)
            {
                $finalData[]=$data['task_name'];
                $finalData[]=$data['description'];
                $finalData[]=$data['hours_spend'];
                $finalData[]=$data['update_date'];
                fputcsv($output, $finalData);
                unset($finalData);
            }
            fclose($fp);

        }

【问题讨论】:

标签: ajax codeigniter


【解决方案1】:

试试这个

 function get_csv()
 {
    var user_id=$('#user').val();
    var start_date=$('#start_date').val();
    var end_date=$('#end_date').val();

    $.ajax({
        type: "POST",
        url: "<?php echo site_url();?>/timesheetmanager/timesheet/getcsv/"+user_id,
        data: {'start_date': start_date,'end_date':end_date},
        success: function(data){
            document.location.href = '<?php echo site_url('timesheetmanager/timesheet/getcsv/'); ?>'+'/'+user_id;
        }
        });
 }

【讨论】:

  • 当我禁用 (document.location.href = ''+'/'+user_id;) 这一行时,参数值正在传递。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
相关资源
最近更新 更多