2013-03-19 2 views
-1

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

Желаемый результат - это раскрывающийся список автозаполнения, в котором перечислены города в формате «Город, штат». Я посмотрел несколько сообщений здесь на 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; 
?> 
+0

ВЫ НЕ ПОЛОЖЕНИЕ ЗАПРОСА – Vitthal

+0

Понято. Должность - это метод, когда они выбирают результат из автозаполнения jqueryui. Значение, выбранное из сценария state_autocomplete.php, будет затем отправлено пользователем, когда они нажмут на submit. – rws907

+0

Действительно, но вы должны выполнить «запрос» для 'Json data', чтобы вернуться в качестве« Object », чтобы установить источник вашего« автозаполнения пользовательского интерфейса ».
См. Ниже код .. – Vitthal

ответ

1

Спасибо за помощь. Я применил новый подход к 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; 
?> 
3

первый Буквальное значение для государственного требуется ..

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

второго Вы имеете запроса данных с помощью 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> 
+0

Это приводит к той же ошибке. Например, если я перехожу на http://www.mydomain.com/state_autcomplete.php?term=ph, я получаю пустой набор результатов, хотя в базе данных есть несколько городов, перечисленных в имени «ph», поэтому я Интересно, возникают ли проблемы с скриптом state_autocomplete.php. – rws907

+0

См. Отредактированный код! – Vitthal

0

автоматического завершения функции вы используете не делать 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`"; 

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

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