自动补全不会返回搜索值,但会返回所有值(在PHP和jQuery中)


Autocomplete don't return a searched value, but it return all value (in PHP, jQuery)

我有这样的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"];