【问题标题】:How to response a json string in Codeigniter如何在 Codeigniter 中响应 json 字符串
【发布时间】:2014-05-01 20:21:08
【问题描述】:

我有一个名为 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());
}

user.php 控制器文件,我写

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

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

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

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

【问题讨论】:

    标签: php mysql json api codeigniter


    【解决方案1】:

    尝试$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
        ));
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

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

      【讨论】:

        【解决方案3】:
        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);
            }
        

        【讨论】:

          【解决方案4】:

          我个人更喜欢对象:

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

          【讨论】:

            猜你喜欢
            • 2023-03-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-07-30
            • 1970-01-01
            相关资源
            最近更新 更多