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上查看此问题 ,您需要在响应返回上设置label
和value
字段。 尝试安排PHP JSON输出以匹配或映射返回与以下内容(未经测试)。
response( $.map(data, function(item){ return { label: item.tag, value: item.tag }; })