2

データベースに保存されているいくつかの画像のファイル名のリストがあります。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);
          }
       })

警告の原因を確認できますか?

4

1 に答える 1

2

問題はあなたの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;
}
于 2013-03-12T20:59:46.603 に答える