2014-10-03 1 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 참조) 그래서 당신은 다음 해당 행을 선택하기 위해 준비 쿼리에서 그 $ 검색 변수를 사용할 수 있습니다 테이블에서. 예를 들어 name이라는 열을 검색하려는 경우 :

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

그것은이다. 당신의 질문을보십시오. 자동 완성에서 사용자 입력을 기준으로 쿼리를 필터링하지 않습니다. 사용자의 입력은 term이라는 URL 매개 변수로 자동 전달됩니다. 쿼리는 데이터를 필터링하기 위해 쿼리를 사용해야합니다. 더 자세히보기 : http://api.jqueryui.com/autocomplete/#option-source

관련 문제