codeigniter json输出错误

时间:2012-05-11 14:36:05

标签: jquery json codeigniter

我试图从codeigniter视图返回json数据。但是我的代码没有工作。我已经尝试过本网站提供的所有选项。但我无法从视图中返回json数据 这是控制器代码。

<?php
class Json extends CI_Controller
{

    function __construct()
    {
        parent::__construct();

    }
    public function index()
    {
        $this->load->model('get_json');
        $data['message']=$this->get_json->get_fruits();

         if ($data!== false)
         {
                    $this->load->view('json',json_encode($data['message']));
        }
    }
}

我的模特

<?php

    class get_json extends CI_Model
    {
        function __construct()
        {
           parent::__construct();
        }


        function get_fruits()
        {
            $sql = "SELECT * FROM fruit where name='Apple'";
            $query = $this->db->query($sql);
            // Fetch the result array from the result object and return it
            return $query->result();

        }

    }

查看代码:

<?php
$this->output->set_content_type('application/json');
echo $message;

请帮我解决我的代码出错的问题。

这就是我在日志中的内容:

ERROR - 2012-05-11 15:28:40 --> Severity: Notice  --> Undefined variable: message C:\xampp\htdocs\ci\system\core\Loader.php(829) : eval()'d code 3
DEBUG - 2012-05-11 15:28:40 --> File loaded: application/views/json.php

1 个答案:

答案 0 :(得分:3)

将您的控制器index方法更改为:

public function index()
    {
        $this->load->model('get_json');
        $data['message']= json_encode($this->get_json->get_fruits());

         if ($data!== false)
         {
                    $this->load->view('json',$data);
        }
}

你应该好好去:你需要将数组传递给$this->load->view,而不是编码值。

编辑:作为旁注,对于这类事情,你甚至不需要观点。您可以直接从控制器返回结果:

public function index()
    {
        $this->load->model('get_json');
        $message = $this->get_json->get_fruits();

         if ($message !== false)
         {
                    $this->output->set_content_type('application/json');
                    echo json_encode($message);
        }
}

清洁工,将所有东西放在一个地方,效率稍高。