Php codeigniter中的Jquery自动完成检索值但不显示它们

Php codeigniter中的Jquery自动完成检索值但不显示它们,php,jquery,codeigniter,jquery-autocomplete,Php,Jquery,Codeigniter,Jquery Autocomplete,经过几个小时的解密教程,我终于让codeigniter和jQueryAutoComplete彼此合作了……有点像 Firebug以JSON格式显示正确的搜索词,但下拉框不显示任何文本。如果有两个结果,则显示两个空行 您可以在此处看到它“不工作”: JS: 控制器: public function search() { $term = $this->input->post('term', TRUE); $this->thread_m

经过几个小时的解密教程,我终于让codeigniter和jQueryAutoComplete彼此合作了……有点像

Firebug以JSON格式显示正确的搜索词,但下拉框不显示任何文本。如果有两个结果,则显示两个空行

您可以在此处看到它“不工作”:

JS:

控制器:

    public function search()
    {
        $term = $this->input->post('term', TRUE);
        $this->thread_model->autocomplete($term);
    }
型号:

    public function autocomplete($term)
    {
        $query = $this->db->query("SELECT tag
            FROM filter_thread ft
            INNER JOIN filter f
            ON ft.filter_id = f.filter_id
            WHERE f.tag LIKE '%".$term."%'
            GROUP BY tag");
        echo json_encode($query->result_array());
    }
希望这是一个简单的解决办法

感谢查看,因此您需要在响应返回上设置
标签
字段。尝试安排您的PHP JSON输出以匹配或将返回映射为以下内容(未测试)


将您的代码更改为类似这样的代码会起作用(我已经在您的站点上进行了测试)

在firebug控制台中复制并粘贴上述代码块,然后尝试自动完成。它会起作用的。我在你的网站上试过了,成功了

其次,您不需要同时使用
$(document).ready(function(){
$(function(){
)来完成相同的任务

检查本节的内容

预期数据格式

来自本地数据、url或回调的数据可以有两种变体:

字符串数组:

[“选择1”、“选择2”]

具有

标签和值属性:[{label:“Choice1”,value:“value1”}

…]


参考资料:

“不工作”不是一条错误消息,我可以从中收集到任何有用的信息……您可以发布您得到的JSON输出吗?顺便说一句,除非$term在传递到您的模型之前经过适当的消毒,否则您将面临SQL注入攻击。请阅读和相关链接。是的,正如其他人指出的,这是一个更好的选择er错误报告也不错。检查javascript控制台,或在浏览器状态栏中查找一个小黄色三角形。在插入查询之前,还应转义该值,或使用框架提供的绑定
    public function autocomplete($term)
    {
        $query = $this->db->query("SELECT tag
            FROM filter_thread ft
            INNER JOIN filter f
            ON ft.filter_id = f.filter_id
            WHERE f.tag LIKE '%".$term."%'
            GROUP BY tag");
        echo json_encode($query->result_array());
    }
response( $.map(data, function(item){
    return {
        label: item.tag,
        value: item.tag
    };
})
$( "#filter" ).autocomplete({
        source: function(request, response) {
            $.ajax({
            url: "http://rickymason.net/blurb/main/search/",
            data: { term: $("#filter").val()},
            dataType: "json",
            type: "POST",
            success: function(data){
               var resp = $.map(data,function(obj){
                    return obj.tag;
               }); 

               response(resp);
            }
        });
    },
    minLength: 2
});