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

Php 通过查询数据库帮助ajax自动完成,php,model-view-controller,codeigniter,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(!

我脑海中浮现的问题是,我的查询是从数据库返回值,还是在代码中遗漏了什么。我一直想弄明白,但我无法理解

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
        });
    });
    });
$(文档).ready(函数(){
$(函数(){
$(“#标记名”).autocomplete({
来源:功能(请求、响应){
$.ajax({url:“”,
数据:{term:$(“#标记名”).val()},
数据类型:“json”,
类型:“POST”,
成功:功能(数据){
答复(数据);
}
});
},
最小长度:2
});
});
});

提前感谢。

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

如果您没有在
print\r($tagnames)
中打印任何东西,那么请确保您没有从数据库中获得任何东西,首先检查它,然后查看客户端代码。在foreach循环
print$row->tag\u name
中,让我知道它打印的是什么?它不打印任何东西。我们可以从模型中打印吗?这与MVC的设计实践相违背,但是为了测试它的正确性<代码>打印($q)循环前打印什么?我猜模型中有问题。它没有打印模型中的任何内容。我尝试了
echo“hello”
,但屏幕上甚至没有打印出来。我猜模型加载不正确。是的,我已将“q”更改为“term”,我认为服务器有一些响应,但当我在输入字段中输入一些文本时,firebug显示500内部服务器错误。我的第一个想法是您有一个打印器和一个输出JSON结果的回音。但我不认为这会导致500个错误。500错误表示服务器有问题。这可能意味着很多事情。最好检查一下日志文件,看看它们说了些什么。有时它也会被记录到Codeigniter日志中。我发现了错误,它与Codeigniter的配置文件有关。我有一个csrf滤波,它导致输出结果的错误,并导致500错误