2014-10-03 66 views
0

我不知道我做錯了。我試圖用自動完成使用JSON,但我總是得到完整的數據。我期望用戶輸入的過濾數據。獲取過濾結果的jQuery UI自動完成

JS:

$("#tags").autocomplete({ 
    source: "/script.php", 
    minLength: 2, 
    select: function(event, ui) { 
     var url = ui.item.id; 
     if(url != '#') { 
      location.href = '/blog/' + url; 
     } 
    }, 
    open: function(event, ui) { 
     $(".ui-autocomplete").css("z-index", 1000); 
    } 
}); 

PHP:

$result = $paed_db->prepare('SELECT data FROM table'); 
$result->execute(); 
$a_json = array(); 
while($data = $result->fetch(PDO::FETCH_OBJ)) { 
    $a_json_row["value"] = $data->data; 
    array_push($a_json, $a_json_row); 
} 

$json = json_encode($a_json); 
print $json; 
exit; 

回答

1

jQueryUI的無助於過濾結果 - 你需要做的搜索在PHP腳本查詢。 jQueryUI的通過GET請求將用戶輸入的,所以你可以使用訪問:

$search = $_GET['term']; 

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

那麼你就可以使用$搜索變量您準備查詢來選擇相應的行從桌子上。例如,如果你有,你想搜索的一列稱爲名稱:

$result = $paed_db->prepare('SELECT data FROM table WHERE name LIKE :search'); 
$result->execute(array('search' => '%'.$search.'%')); 
1

這是因爲你總是返回一切。看看你的查詢。你不從自動完成用戶輸入過濾查詢。用戶的輸入將自動作爲稱爲術語的URL參數傳遞。你的查詢應該使用它來過濾數據。查看更多在這裏:http://api.jqueryui.com/autocomplete/#option-source