我有这样的index.php
:
<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.4/theme/smoothness/jquery-ui.css"/>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
$(document).ready(function(){
$("name").autocomplete({
minLength: 2,
source: 'autocomplete.php',
select: function(event,ui){
$("#name").val(ui.item.value);
}
});
});
</script>
<form method="GET">
<input type="text" name="name" id="name"/>
</form>
这是autocomplete.php
$q = $_GET['name'];
...
$sql = "SELECT name_name FROM tbl_data WHERE name_name LIKE '%$q%'"
...
返回一个json
格式的值
但是,当我在inputbox
中输入两个字母时,它显示的是tbl_data
中的所有名称,而不仅仅是LIKE '%$q'
的数据。
如何解决这个问题?
有任何回应,谢谢…
首先你必须更具体的jQuery选择器:
$('#name').autocomplete({...});
但我认为你做错的地方是PHP代码中从_GET
数组中检索变量的部分,jQuery发送给服务器的变量名是q
而不是name
所以你的代码应该是这样的:
$q = _GET['q'];
此问题已修复!我只是将查询从"SELECT name_name from tbl_data WHERE name_name LIKE '%$q%'"替换为"SELECT name_name from tbl_data WHERE name_name LIKE '%".$_REQUEST['term']."%'"..这个工作!甚至我也不确定为什么要用"term"。也许,它是jQuery返回的关键字。对此的任何解释都将被接受。由于
http://api.jqueryui.com/autocomplete/#option-source
一个请求对象,具有单个term属性,该属性指向当前文本输入中的值。例如,如果用户在城市字段中输入"new yo",则自动完成项将等于"new yo"。
$q = $_GET["term"];