2013-08-25 3 views
-1

Функция автозаполнения прикреплена к этому полю ввода с id = "search". Когда я печатаю текст, ничего не появляется, в отличие от результатов поиска, которые появились несколько раз, прежде чем я использовал календарь JQuery UI на другом текстовом поле в другом файле.JQuery Autocomplete not loading

Консоль разработчика в CHROME и Firebug в Firefox не показывает ошибок и отображает «XHR завершена загрузка». Я не знаю, что пошло не так! Пожалуйста помоги.

default.php

<script src="jquery-1.9.1.js"></script> 
<script src="jquery-ui-1.10.3.custom.min.js"></script> 
<script src="myfunctions.js"></script> 
<link rel="stylesheet" type="text/css" href="jquery-ui-1.10.3.custom.min.css"/> 
<link rel="stylesheet" type="text/css" href="main.css"/> 

    <div id="search_container"><input type="text" onkeyup="showHint(this.value)" id="search" placeholder="Search here"/></div> 

myfunctions.js

function showHint(strvalue) 
{ 
    $("#search").autocomplete({ 
     minLength:2, 
    source: "getHint.php?search="+strvalue, 
    select:function(ui) 
       { 
        log(ui.item? 
        window.location.replace(ui.item.link): 
        "Not Found"); 
       } 
    } 
     ).data("ui-autocomplete")._renderItem = function (ul, item) { 
return $("<li></li>") 
     .data("item.autocomplete", item) 
     .append("<a>" + item.label + "</a>") 
     .appendTo(ul); 
}; 
} 

getHint.php

<?php 
require_once 'myfunctions.php'; 
$search=sanitizeString($_GET['search']); 
$query="Select * from students where firstname like '%$search%' or lastname like '%$search% order by firstname'"; 
$result= queryMysql($query); 
$k=0; 
while($row= mysql_fetch_array($result)) 
{ 
    $email=$row['email']; 
    $name=nameOf($email); 
    $studentid=studentidOf($email); 
    $as[]['label']="<a style='text-decoration:none' href='student_profile.php?studentid=$studentid'><div class='search_elements'><span class='search_elements_span'>$name</span></div></a>"; 
    $as[$k++]['value']=$name; 

} 

header('Cache-Control: no-cache, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Content-type: application/json'); 

echo json_encode($as); 

main.css

#search_container 
{ 
position: relative; 
top:1px; 
left:750px; 
width:250px; 

} 

#search 
{ 
font-family: cursive; 
font-size: 14px; 
color: #999999; 
width:250px; 
position:relative; 
background: white; 
z-index: 11; 
top: 1px; 
} 

#search:focus 
{ 

font-family: cursive; 
font-size: 14px; 
width: 250px; 
color: black; 
} 

На проверке кода в браузере, текстовое поле показывает ввод следующих после я поиска элемента:

<input id="searchstr" class="ui-autocomplete-input" type="text" placeholder="Search here" name="searchstr" autocomplete="off"></input> 

Почему это атрибут автозаполнения установлен в положение «выключено» ??

+0

Вы проверили содержание запроса AJAX? Ответ с заголовком 200 OK не означает, что ответ в порядке. –

+0

@Mathletics Текстовая область ввода имеет идентификатор 'search' – kamal0808

+0

@dragoste - Да, я проверил все запросы вручную на MySQL. Кроме того, поиск автозаполнения работал отлично один раз, и после этого я не внес никаких изменений в файл PHP! – kamal0808

ответ

0

Файл 'myfunctions.php', требуемый getHint.php, был печать данных. Файл getHint.php не должен печатать или «эхо» ничего, если он должен кодировать массив или данные в форме JSON.

Извлечение данных печати из «myfunctions.php» работало удивительно хорошо. Кодированные данные JSON можно проверить через приложение FIREBUG в Mozilla Firefox.