如何在Codeigniter中响应json字符串

时间:2014-03-24 12:56:06

标签: php mysql json api codeigniter

我有一个名为users的数据库表,其中包含一些密钥&userid,username,age&#39 ;,此表中还有一些记录,我想让它们像json一样,请看这个

   {
        "status":"1",
        "msg":"success",
        "userlist":[
        {
        "userid":"1",
        "username":"chard",
        "age":"22"
        },
        {
        "userid":"2",
        "username":"rose",
        "age":"21"
        },
        {
        "userid":"3",
        "username":"niki",
        "age":"25"
        }
        ]
}

user_model.php文件,我写

function get_users()
{
 $query = $this->db->get('users');
     return json_encode($query->row_array());
}

user.php控制器文件,我写

function index_get()
{
  $this->load->model('users_model');
  $query = $this->users_model->get_users();
 echo $query;
}

我可以得到结果,但这是错误的结果,只有这个

{ "userid":"1", "username":"chard", "age":"22" }

所以我应该怎么解决这个问题?感谢

4 个答案:

答案 0 :(得分:2)

尝试使用$query->result_array()代替$query->row_array()

您的模型功能会改变它:

function get_users()
{
 $query = $this->db->get('users');
 return $query->result_array();
}

在控制器方法

function index_get()
{
    $this->load->model('users_model');
    $users = $this->users_model->get_users();
    echo json_encode(array(
        'status' => 1,
        'msg' => 'success',
        'userlist' => $users
    ));
}

答案 1 :(得分:0)

试试这个:

function get_users()
{
   $query = $this->db->get('users');
   return $query->result_array();
}

function index_get()
{
    $this->load->model('users_model');
    $users = $this->users_model->get_users();
    echo json_encode(array(
        'status' => 1,
        'msg' => 'success',
        'userlist' => $users
    ));
}

答案 2 :(得分:0)

You can use this:

 function get_users()
 {  
            $dataarr = array();
    $res = array();
    $this->db->start_cache();

    $query = $this->db->get('users');

    $this->db->stop_cache();
    $this->db->flush_cache();
    $groups = array();

    if(!empty($res))
    {   
                     foreach ($query->result() as $row)
                     {  
                        $dataarr[]=
            array(

            'userid' => $row['userid'],
            'username' => $row['username'], 
            'age' => $row['age']
                            );  
                     }                      
    }
    $query->free_result();
            $res = array(
                           'status' => 1,
                           'msg' => 'success',
                           'userlist' => $dataarr

                        );


    return json_encode($res);
    }

答案 3 :(得分:0)

我个人更喜欢对象:

$data = $query->result();
echo json_encode($data);

这将返回一个对象数组,而不是一个数组数组(多维)。

您甚至可以将参数值传递给该方法,以将这些对象作为特定类的实例返回:

$data = $query->result('User_model');

我倾向于只使用魔术常量,无论如何我后来改变了类名:

$data = $query->result(__CLASS__);

这样你可以在你的javascript回调中访问你的对象:

var data = yourResponse;
yourResponse.userlist.forEach(function(user){
  alert( user.username );
});