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

经过几个小时的解密教程,我终于得到了codeigniter和jquery自动完成function,可以互相协作……有点儿。

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

你可以在这里看到它“不工作”: http : //rickymason.net/blurb/main/home

JS:

$(document).ready(function() { $(function(){ $( "#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){ response(data); } }); }, minLength: 2 }); }); }); 

控制器:

  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()); } 

希望它是一个简单的解决方案!

谢谢

将代码更改为类似的东西会起作用(我已在您的网站中测试过)

 $( "#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 }); 

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

其次,你不需要$(document).ready(function() {$(function(){同时完成同样的事情。

检查jQuery UI自动完成的这一部分

预期的数据格式

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

字符串数组:

[“Choice1”,“Choice2”]

一个对象数组

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

…]

参考: $ .map

在SO上查看此问题 ,您需要在响应返回上设置labelvalue字段。 尝试安排PHP JSON输出以匹配或映射返回与以下内容(未经测试)。

 response( $.map(data, function(item){ return { label: item.tag, value: item.tag }; })