Php 如何在Codeigniter中响应json字符串

Php 如何在Codeigniter中响应json字符串,php,mysql,json,api,codeigniter,Php,Mysql,Json,Api,Codeigniter,我有一个名为users的数据库表,其中有一些键“userid,username,age”,这个表中还有一些记录,我想像json一样获取它们,请看这个 { "status":"1", "msg":"success", "userlist":[ { "userid":"1", "username":"chard", "age":"22" }, {

我有一个名为users的数据库表,其中有一些键“userid,username,age”,这个表中还有一些记录,我想像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());
}
function index_get()
{
  $this->load->model('users_model');
  $query = $this->users_model->get_users();
 echo $query;
}
php控制器文件,我写的

function get_users()
{
 $query = $this->db->get('users');
     return json_encode($query->row_array());
}
function index_get()
{
  $this->load->model('users_model');
  $query = $this->users_model->get_users();
 echo $query;
}
我可以得到结果,但这是一个错误的结果,只有这个

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

那么我应该如何解决这个问题呢?

尝试
$query->result\u array()
而不是
$query->row\u 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
    ));
}
试试这个:

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
    ));
}

我个人更喜欢物品:

$data = $query->result();
echo json_encode($data);
这将返回一个对象数组,而不是数组数组(多维)

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

$data = $query->result('User_model');
我倾向于使用magic常量,在任何情况下,我都会更改类名:

$data = $query->result(__CLASS__);
这样,您就可以在javascript回调中访问对象,如下所示:

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