У меня есть простое поле поиска, в котором будет указываться местоположение пользователя из доступных записей в моей базе данных. Я пытаюсь запустить автозаполнение 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`";
Затем скрипт генерирует все города и состояния, тогда функция автоматического завершения будет соответствовать на входе пользователей.