2010-05-20 3 views
1

Я хотел бы использовать автозаполнение jQuery UI для загрузки списка из моей базы данных, но я не знаю, какой метод я должен использовать для этого.jquery ui база данных автозаполнения

Я попытался использовать метод «Удаленный источник данных» http://jqueryui.com/demos/autocomplete/#remote, но он, очевидно, не работает.

У меня есть следующий код:

ЯШ:

$(function() { 
    $("#client").autocomplete({ 
    source: "nom.php", 
    minLength: 2, 
     select: function(event, ui) { 
     alert(ui); 
     } 
    }); 
}); 

HTML:

<label for="client">Client</label> 
<input name="client" id="client" class="ui-autocomplete ui-widget-content ui-corner-all" /> 

PHP:

$query = "SELECT nom from personne"; 
$result = mysql_query($query, $db); 

while($row = mysql_fetch_assoc($result)) { 

foreach($row as $val) 
    $tab[] = $val; 

} 

print json_encode($tab); 

Он не делает показать все значения независимо от того, Я вхожу, но когда я у результата nom.php и мимо него рядом с источником: это работа ...

поблагодарить Вас за штурвал

+0

Есть ли ошибки? –

+0

Это должно сработать. Вы должны проверить свои журналы, возможно, сделать очень легкую отладку javascript с помощью инструмента, такого как firebug (просто проверить, хорошо ли вызвана функция, и что «nom.php» вызывается и возвращает хорошие данные). – Patrick

+0

Я действительно не понимаю, как работает этот автозаполнение: , когда я отлаживаю с помощью firefox, я вижу, что ответ [«Marion», «AM», «PE», «AH», «JP», «FD»] no что я пишу, я ожидаю, что автозаполнение будет выбирать хорошие значения из этого списка, но это не так. Когда я пишу источник: [«Марион», «AM», «PE», «AH», «JP», «FD»], он работает правильно. – copndz

ответ

3

Проблемы заключается в том, что вы не фильтрации на стороне сервера результатов.

Когда вы используете локальную коллекцию, локальная коллекция автоматически фильтруется автозаполнением.

Однако при использовании удаленного источника источник должен фильтровать. Я предполагаю, что это сокращение полосы пропускания, так что сервер отправляет только соответствующие элементы, а не все элементы, и пусть фильтр браузера заканчивается.

При вызове метода на стороне сервера автозаполнение также отправляет параметр term, который вы можете использовать для фильтрации.

Вы можете разжиться введенного значения, как это в PHP скрипт:

$term = trim(strip_tags($_GET['term'])); 

Тогда в вашем foreach, только добавить элементы, соответствующие фильтр к вашей коллекции, прежде чем отправить его обратно.

Смежные вопросы