jquery自动完成不会给任何结果
问题描述:
我是codeignitor
的新手,试图从数据库中获取jquery autocomplete
。已经有很多关于这个话题的问题,但没有一个帮助我。jquery自动完成不会给任何结果
这里是视图文件我的脚本功能
查看
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js">
</script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js">
</script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-
ui.css" />
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js">
</script>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script type="text/javascript">
$(function() {
$("#vname").autocomplete({
source: function(request, response) {
$.ajax({
url: "vendor/search",
data: { term: $("#vname").val()},
dataType: "json",
type: "GET",
success: function(data){
var resp = $.map(data,function(obj){
return obj.tag;
});
response(resp);
}
});
},
minLength: 2
});
});
</script>
</head>
.
.
.
.
<input type="text" class="form-control" name="vendor_name" id="vname" />
这里控制器(供应商)函数(搜索),从中我试图从数据库
获得建议的阵列控制器
public function search()
{
$json = [];
$this->load->database();
if(!empty($this->input->get("term"))){
$this->db->like('name', $this->input->get("term"));
$query = $this->db->select('id,name as text')
->limit(10)
->get("vendors");
$json = $query->result();
}
echo json_encode($json);
}
问题是,当我输入字段时,什么都没有发生(没有自动完成出现),但我的供应商/搜索功能正常工作,而直接访问它并传递一些东西作为参数。我认为$_GET[term]
总是空的或什么的。
我没有任何想法现在应该做什么,任何建议将是可观的。
答
变化控制器
public function search(){
$json = [];
$this->load->database();
if(!empty($this->input->get("term"))){
$this->db->like('name', $this->input->get("term"));
$query = $this->db->select('id,name as text')
->limit(10)
->get("vendors");
$json = $query->result();
}
//set page header
$this->output
->set_content_type('application/json')
->set_output(json_encode($json));
}
取代script标签
<script type="text/javascript">
$(function() {
$("#vname").autocomplete({
source: function(request, response) {
$.ajax({
url: "<?=base_url(); ?>vendor/search?term="+request.term,
dataType: "json",
type: "GET",
success: function(data){
response($.map(data, function (value, key) {
return {
label: value.text,
value: value.id
}
}));
}
});
},
minLength: 2,
select: function(event, ui) {
//select event of autocomplete
console.log("id : ",ui.item.value);
console.log("text : ",ui.item.label);
$('#vname').val(ui.item.label);
return false;
},
});
});
</script>
答
改变这一行:
url: "vendor/search",
到:
url: "<?php echo base_url('vendor/search'); ?>",
相反,如果get()可能试图控制器上的post()和ajax类型:“POST”, – user4419336
我已经试过了。没有工作 – Whoosis
尝试从Ajax请求中删除''dataType:“json”,''请求 –