我正在使用自动完成功能来完成我的项目,它可以正常显示下面的图像。
但是当我输入更多字母到文本框时,结果仍然如下图所示。
所以如何删除它,结果应该显示匹配的数据。我的视图文件是
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-autocomplete/1.0.7/jquery.auto-complete.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<!-- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> -->
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/jquery-ui.min.js"></script>
<input class="form-control ui-autocomplete-input" name="src" id="src" type="text" value="<?if (!empty($rule_info['src'])) {echo $rule_info['src'];} else{ echo 'any';}?>" pattern="[a-zA-Z0-9_.:]+" placeholder="Source Address" <?if (!empty($rule_info['src'])) {} else{ echo 'disabled';}?> autocomplete="off">
$(function() {
$( "#dst" ).autocomplete({ //the recipient text field with id #username
source: function( request, response ) {
$.ajax({
url: "<?php echo base_url();?>rule/search_alias_for_rule",
dataType: "json",
data: request,
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
},
success: function(data){
if(data.response == 'true') {
response(data.message);
}
}
});
}
});
});
然后控制器功能是。
public function search_alias_for_rule(){
$username = trim($this->input->get('term', TRUE)); //get term parameter sent via text field. Not sure how secure get() is
$this->db->select('name');
$this->db->from('alias');
$this->db->like('name', $username);
$this->db->limit('5');
$query = $this->db->get();
if ($query->num_rows() > 0)
{
$data['response'] = 'true'; //If username exists set true
$data['message'] = array();
foreach ($query->result() as $row)
{
$data['message'][] = array(
'label' => $row->name,
'value' => $row->name
);
}
}
else
{
$data['response'] = 'false'; //Set false if user not valid
}
echo json_encode($data);
}
我该怎么做?请帮帮我。
答案 0 :(得分:0)
尝试设置$ .ajax函数中的方法类型和数据:
$(function() {
$( "#dst" ).autocomplete({ //the recipient text field with id #username
source: function( request, response ) {
$.ajax({
type: 'GET',
data: {
term: request.term
},
url: "<?php echo base_url();?>rule/search_alias_for_rule",
dataType: "json",
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
},
success: function(data){
if(data.response == 'true') {
response(data.message);
}
}
});
}
});
});
答案 1 :(得分:0)
默认情况下,Inheritance
运算符类似于:
like
对你而言,上述情况正在发挥作用。
试试这个代码段:
$this->db->like('title', 'match');
// Produces: WHERE `title` LIKE '%match%' ESCAPE '!'
答案 2 :(得分:0)
现在已经完成了在ajax中更改成功功能。
success: function(data){
if(data.response == 'true') {
response(data.message);
}
else{
response(data.message).remove();
}
}