2014-06-22 2 views
-1

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

Выход моего кода

enter image description here

HTML

<td width="155" bgcolor="#999999">Client Name</td> 
    <td width="218" bgcolor="#999999"><input type="text" name="clientname" id="clientname" class="forinput" /></td> 

сценарий

<script type="text/javascript"> 
     $(document).ready(function() { 
    $("#clientname").autocomplete(
    { 
    source:"getautocomplete.php", 
    minLength:1 
    }) 
     }); 
    </script> 

getautocomplete.php

..databaseconnection 
    $term = trim(strip_tags($_GET['term']));//retrieve the search term that autocomplete sends 

    $qstring = "SELECT clientname FROM client WHERE clientname LIKE '%".$term."%'"; 
    $result = mysql_query($qstring);//query the database for entries containing the term 

    while ($row = mysql_fetch_array($result,MYSQL_ASSOC))//loop through the retrieved values 
    { 
    $row['clientname']=htmlentities(stripslashes($row['clientname'])); 
    $row_set[] = $row;//build an array 
    } 
    echo json_encode($row_set);//format the array into json data 

Что я хочу достичь
enter image description here

проверить мое подключение к базе данных и ее правильной. Может ли кто-нибудь объяснить мне, что я делаю неправильно? я что-то пропустил? Заранее спасибо.

+1

Необходимо отладить это и предоставить более подробную информацию. Вы смотрите консоль своего браузера (F12)? На вкладке «Сеть» вы видите запросы AJAX на getautocomplete.php? Является ли «термин» отправлен? –

+0

См. Также [Как предотвратить SQL-инъекцию в PHP] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php). Ваш запрос уязвим для инъекций, так как '$ term' не имеет ограничений. –

+0

Также убедитесь, что на стороне PHP вы включили и включили отчет об ошибках. 'Error_reporting (E_ALL); ini_set ('display_errors', 1) '; –

ответ

1

Я не думаю, что результат, который вы отправляете обратно, действителен в соответствии с тем, что jQueryUI is expecting.

Теперь вы создаете массив массивов, и вы должны отправить только значения обратно (при условии, что label и value такие же, имя клиента):

// $row['clientname']=htmlentities(stripslashes($row['clientname'])); 
$row_set[] = htmlentities(stripslashes($row['clientname'])); //build an array 

Также обратите внимание на комментарии об устаревших mysql_* функциях и sql-инъекции.

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