2013-07-16 66 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。數據本身可以採用與上述本地數據相同的格式。

相關問題