2013-07-16 38 views
1

无论您输入什么内容,jquery autocomplete都会显示来自源的所有结果,即使它们在输入字段中不包含任何字符。无论我写什么,jQuery自动完成都会返回所有结果(json)

代码如下。

$('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"])."'")) { 

,现在它不返回所有。事实上,它会返回正确的,但只有在完全拼出后才能达到目的。

+0

我相信当你使用一个url源代码时,源代码可以过滤结果。 – cadrell0

回答

4

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

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

这里是关键部分,重点煤矿。

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

相关问题