将值从Controller传递给jQuery CodeIgniter

时间:2016-02-16 08:08:28

标签: php jquery mysql ajax codeigniter

直截了当。

这是我的模型中的一些功能(学生模型):

public function get_exam_data($exam_id){
    $this->db->select('exam_id, exam_name, duration');
    $this->db->from('exams');
    $this->db->where('exam_id', $exam_id);
    $result = $this->db->get();

    $exam = array();
    $examrow = $result->row();
    $exam['id'] = $examrow->exam_id;
    $exam['name'] = $examrow->exam_name;
    $exam['duration'] = $examrow->duration;
    return $result;
}

public function start_exam($exam_id, $student_id)
{
    $this->db->select('*');
    $this->db->from('exam_record');
    $exam_newstatus = array(
        'student_id' => $student_id,
        'exam_id' => $exam_id);
    $this->db->set('start_time', 'NOW()', FALSE);
    $this->db->insert('exam_record', $exam_newstatus);

    //$examrecord_id is autoincrement in mysql exam_record table
    $examrecord_id = $this->db->insert_id();
    return $examrecord_id;
}

这是学生管理员的一项功能:

public function get_student_exam_data()
{
    $exam_id  = $this->input->post('examId');
    $examdata = $this->student_model->get_exam_data($exam_id);
    $session = get_session_details();

    if (isset($session->studentdetails) && !empty($session->studentdetails))
    {
        $loggeduser = (object)$session->studentdetails;
        $examrecord_id = $this->student_model->start_exam($exam_id, $loggeduser->student_id);
    }
    echo json_encode($examdata);
}

这是我通过Ajax访问$ examdata值的方法:

jQuery(function()
{
    $.ajax({
        type   : "POST",
        url    : "../get_exam_data/",
        async  : false,
        data   : {"examId": EXAM_ID },
        success: function(response)
        {
            var data = $.parseJSON(response);
            examId = data.id;
            examName = data.name;
            examDuration = data.duration;
        }
    });
}

我希望能够从学生控制器传递$ examrecord_id,以便在我的jQuery文件中使用它,就像$ examdata一样。 我试着在Controller上使用json_encode()两次。没用。

如何将 $ examrecord_id 控制器传递到jQuery文件? 有人可以开导我吗?谢谢。

1 个答案:

答案 0 :(得分:1)

$examrecord_id

添加另一个索引
if (isset($session->studentdetails) && !empty($session->studentdetails))
{
    $loggeduser = (object)$session->studentdetails;
    $examrecord_id = $this->student_model->start_exam($exam_id, $loggeduser->student_id);
}
echo json_encode(array(
    'examdata' => $examdata,
    'examrecord_id' => (!empty($examrecord_id)?$examrecord_id:0)
));

请注意速记if条件,以检查$examrecord_idempty

添加dataType选项并将'json'作为其值。然后你可以访问数据

dataType : 'json',
success: function(response)
{
    var data = response.examdata;
    alert(response.examrecord_id); // your examrecord_id
    examId = data.id;
    examName = data.name;
    examDuration = data.duration;
}