我对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();
}
}
答案 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));