jQueryUI автозаполняется с PHP и JSON

У меня есть простое поле поиска, в котором будет указываться местоположение пользователя из доступных записей в моей базе данных. Я пытаюсь запустить автозаполнение jQuery UI, но у меня проблемы. Когда в консоли Chrome включена консоль JavaScript, я не вижу ответа от сценария, когда начинаю печатать.

Желаемый результат – это раскрывающийся список автозаполнения, в котором перечислены города в формате «Город, штат». Я посмотрел несколько сообщений здесь на SO и изменил свой код во многих попытках решить эту проблему, но не повезло. Заранее благодарю за любые рекомендации / исправления. Очень признателен.

Вот мой код jQuery UI (я использую самые последние библиотеки, размещенные на code.jquery.com)

<script type="text/javascript"> $(document).ready(function() { $('#locale').autocomplete( { source: "./state_autocomplete.php", minLength: 2 }); }); </script> 

Вот мой код формы:

 <form name="frm_set_locale" method="post" action="/index2.php"> <input type="text" name="locale" id="locale" class="textbox"> <input type="submit" class="button" name="frm_submit_locale" value="Search"> </form> 

И вот сценарий mysqli, который извлекает информацию

 <?php include "/includes/dbconn.php"; // Query to get the usable locations $locale = trim($_GET['term']); $return = array(); $q = "SELECT `city`, `state` FROM `locales` WHERE `city` LIKE '%".$locale."%'"; $r = mysqli_query($q, $connect); $json = "["; $first = true; while ($row = mysqli_fetch_assoc($r, $connect)){ if(!$first){ $json .= ","; }else{ $first = false; } $json .= "{'value':'".$row['city'].", ".$row['state']."}"; } $json .= "]"; echo $json; ?> 

Требуется 1-й буквенный знак состояния.

 "{'value':'".$row['city'].", 'state':".$row['state']."}" 

2nd Вы должны запросить данные по почте Ajax

 <script type="text/javascript"> $(document).ready(function() { $.ajax({ url: '/state_autocomplete.php', type: 'POST', dataType: 'json', success: function(data){ $('#locale').autocomplete( { source: data, minLength: 2 }); } }); }); </script> 

Спасибо за помощь. Я применил новый подход к state_autocomplete.php, и вот что заставило его работать на меня. Действительно чист.

 <?php // Database Connection include "/includes/dbconn.php"; // Query to get the usable locations $locale = $_GET['term']; $q = "SELECT `city`, `state` FROM `locales` WHERE `city` LIKE '%$locale%'"; $r = mysqli_query($connect, $q); $city_state = array(); while($row = mysqli_fetch_assoc($r)){ $result = $row['city'].", ".$row['state']; array_push($city_state, $result); } $json = json_encode($city_state); echo $json; ?> 

Функция автоматической полной функции, которую вы используете, не выполняет вызов ajax с строкой запроса, как вы предполагали из <input type="text" name="locale" id="locale" class="textbox">

Для него смена работы

 $q = "SELECT `city`, `state` FROM `locales` WHERE `city` LIKE '%".$locale."%'"; 

в

 $q = "SELECT `city`, `state` FROM `locales`"; 

Затем скрипт генерирует все города и состояния, тогда функция автоматического завершения будет соответствовать на входе пользователей.