在Codeigniter中使用AJAX通过查询数据库中的图像文件名显示图像列表


Displaying a list of images using AJAX in Codeigniter by querying image filenames form database

我有一个数据库中存储的一些图像的文件名列表。我试图使用ajax获得该列表,但我得到警告消息:

[json] (php_json_encode) type is unsupported, encoded as null

下面是我的代码:

控制器:

<?php
class Create extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        $this->load->model('get_files');
    }
    public function index()
    {
        $data['title'] = 'Create New Map';
        $this->load->view('head&foot/create_header', $data);
        $this->load->view('create', $data);
        $this->load->view('head&foot/create_footer');
    }
    // Loads the default tiles into the gallery
    public function update_gallery()
    {
        echo json_encode($this->get_files->get_image_list()); 
    }
}
?>

模型:

<?php
/*
 * Returns a list of files from a database
 */
class Get_files extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
        $this->load->database();
    }
    function get_image_list(){
        return $this->db->query("SELECT * FROM default_tile");
    }
}
?>

在我看来ajax请求是:

$.ajax({
          url:'create/update_gallery',
          type:'GET',
          success:function(data){
            $('#default_tiles_view').html(data);
          }
       })

可以看到是什么引起的警告吗?

问题是您的get_image_list()方法。它实际上并没有返回一个图像列表,而是一个database result object: $this->db->query("SELECT * FROM default_tile")的结果。

在该函数中,您需要循环遍历结果集以获得列表(数组)中的所有图像,并从函数返回该列表。

的例子:

function get_image_list(){
    $images = array();
    $query =  $this->db->query("SELECT * FROM default_tile");
    // simple example
    foreach ($query->result_array() as $row) 
    {
      $images[] = $row;
    }
    return $images;
}