通过查询数据库来帮助ajax自动完成

时间:2011-04-14 07:52:48

标签: php model-view-controller codeigniter

我想到的问题是我的查询是从数据库返回值还是在我的代码中遗漏了任何内容。我一直想弄清楚,但我无法理解。

  

print_r($ tagnames)不会在屏幕上打印任何内容。

此代码是控制器的一部分

function get_Names() {
            // Convert the string to the lowercase
            $q = strtolower($this->input->post('q', TRUE));
            if(!$q) {
                return;

            }
            $tagnames[] = $this->autocomplete_model->getData();
            print_r($tagnames);

            echo json_encode($tagnames);

        }

我有autocomplete_model.php,此代码是模型的一部分

class Autocomplete_model extends CI_Model {

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

    function getData() {
        $q = $this->db->query("SELECT * FROM tags");
        if($q->num_rows() > 0) {
            foreach($q->result() as $row) {
                $data[] = $row->tag_name;
            }
            return $data;
        }
    }
}

我在视图中有以下代码

$(document).ready(function() {
    $(function() {
        $( "#tagname" ).autocomplete({
                    source: function(request, response) {
                        $.ajax({ url: "<?php echo site_url('generator/get_Names'); ?>",
                        data: { term: $("#tagname").val()},
                        dataType: "json",
                        type: "POST",
                        success: function(data){
                                response(data);
                        }
                    });
        },
        minLength: 2
        });
    });
    });

提前致谢。

1 个答案:

答案 0 :(得分:1)

看起来您的AJAX调用正在发送“term”作为发布数据,但是您的get_Names()方法正在寻找“q”的post参数。改变其中一个,我认为你应该做得很好。