使用AJAX在Codeigniter

时间:2017-01-27 06:30:28

标签: json ajax codeigniter

我对codeigniter比较新。当我尝试使用AJAX在我的数据库上执行搜索操作时,代码返回成功并且检索数据但是,此数据是JSON编码的并且在我的视图的javascript部分中,所以我无法使用codeigniter的json_decode函数

public function lookup(){
    $keyword = $this->input->post('term');
    $data['response'] = 'false'; //Set default response
    $query = $this->MAutocomplete->lookup($keyword); //Search DB
    if( ! empty($query) )
    {
        $data['response'] = 'true'; //Set response
        $data['message'] = array(); //Create array
        foreach( $query as $row )
        {
            $data['message'][] = array( 
                                    'id'=>$row->id,
                                    'value' => $row->firstname,

                                 );  //Add a row to array
        }
    }          
        echo json_encode($data); //echo json string
}

将数据作为data.message在javascript中访问。 请告诉我,无论如何我可以在程序的php部分使用这些数据

<?php
class MAutocomplete extends CI_Model{
function lookup($keyword){
    $this->load->database();
    $this->db->select('*');
    $this->db->from('Students');
    $this->db->like('firstName',$keyword,'after');
    $query = $this->db->get();    
     // echo '<pre>'; print_r($query->result()); exit;
    return $query->result();
}
}

2 个答案:

答案 0 :(得分:0)

我认为您需要使用JSON.parse()在Ajax的成功函数中解析json响应。就像这样..

$.ajax({
url:'',//your url
dataType:'JSON',
data:'',//your data 
success:function(response){
data = JSON.parse(response);
alert(data.message.value);//alerts value
}
});

在控制器中使用count而不是为空。要检查数组

 if( count($query) >0 )
    {
        $data['response'] = 'true'; //Set response
        $data['message'] = array(); //Create array
        foreach( $query as $row )
        {
            $data['message'][] = array( 
                                    'id'=>$row->id,
                                    'value' => $row->firstname,

                                 );  //Add a row to array
        }
    }       

答案 1 :(得分:0)

您应该用来回复:

return $this->output
        ->set_content_type('application/json')
        ->set_output(json_encode($data));