1

无论您键入什么,jquery 自动完成都会显示源中的所有结果,即使它们在输入字段中不包含任何字符。

代码如下。

$('input#project-name').autocomplete({
    source: "project-list.php",
    minLength: 2,
    autoFocus: true
});

源输出这样的json。

[{"value":"sdf"},{"value":"asdas"},{"value":"ANOTHERONE"}]

我已经在谷歌上搜索了一段时间,但我无法弄清楚我做错了什么。任何帮助是极大的赞赏!

更新

谢谢各位大佬的回复,可惜没看懂,抱歉。我最近才开始学习这些东西。我的 PHP 目前看起来像这样。

$userID = $_SESSION['userID'];

$loggedIn = $mysqli->query("SELECT * FROM users WHERE userID = '".$userID."'");
$getRow = "SELECT * FROM projects WHERE projectUserID = '".$userID."'";

if ($loggedIn->num_rows) { // if user is logged in

    $projects = array();
    if ($result = $mysqli->query("SELECT projectName FROM projects WHERE projectUserID = '".$userID."'")) {
        $placeholder = array();
        while($row = $result->fetch_object()) {
            $placeholder = $row;
            array_push($projects, $placeholder);
        }
        $json = json_encode($projects);
        $result = str_replace("projectName", "value", $json);
        echo $result;
    }

}

但据我了解,我需要以某种方式在其中包含该术语?我可以举个例子吗?

更新 2

if (!isset($_REQUEST['term']) )
    exit;
    $projects = array();
    if ($result = $mysqli->query("SELECT projectName FROM projects WHERE projectName = '".$mysqli->real_escape_string($_REQUEST["term"])."'")) {

现在它不会全部返回。事实上,它返回正确的,但只有在你完全拼出它之后,这违背了目的。

4

1 回答 1

4

有关我的评论的更多信息。请参阅自动完成文档。

http://api.jqueryui.com/autocomplete/#option-source

这是关键部分,强调我的。

字符串:使用字符串时,自动完成插件期望该字符串指向将返回 JSON 数据的 URL 资源。它可以在同一台主机上,也可以在不同的主机上(必须提供 JSONP)。自动完成插件不过滤结果,而是添加了一个带有术语字段的查询字符串,服务器端脚本应该使用它来过滤结果。例如,如果源选项设置为“ http://example.com ”并且用户键入 foo,则会向http://example.com?term=foo发出 GET 请求。数据本身可以采用与上述本地数据相同的格式。

于 2013-07-16T18:09:11.013 回答