Привет, кто-нибудь, пожалуйста, взгляните на это и сообщите мне, где я ошибаюсь. Я пытаюсь получить автозаполнение jQuery UI для работы. это мой код: Это search.php
include "db_connect.php"; $search = $_GET['term']; $result = mysql_query("SELECT Title FROM `movie` WHERE `Title` LIKE '%$search%' ORDER BY Title ASC") or die('Something went wrong'); $rows = array(); while ($row = mysql_fetch_assoc($result)){ $rows[] = $row; } print json_encode($rows); ?>
это мой встроенный скрипт javascript
<script type="text/javascript"> $(document).ready(function() { $('#auto').autocomplete( { source: "./search.php", minLength: 3 }); }); </script>
и это «авто» div
<div id="searchTxtFieldDiv"> <p><input type="text" id="auto" /></p> </div>
Когда я смотрю на вызов с помощью firebug, я вижу, что search.php возвращается
[{"Title":"Sin City"}]
jQuery просто показывает НЕ УКАЗАН любые идеи?
Взгляните на документацию по автозаполнению jquery ui . JSON, который вы возвращаете, не соответствует тому, что ищет автозаполнение. Возвращаемый объект должен иметь свойства с именем label или value (или оба).
Вы можете попробовать следующие варианты:
Измените возвращаемый JSON, чтобы включить свойства метки / значения, такие как:
[{"label":"Sin City"}]
В примерах также используется свойство id. Я считаю, что вышеизложенное является минимальным требованием для автозаполнения для отображения списка значений. Я думаю, вы также можете вернуть массив строк, и он отобразит его точно так же, как и выше.
[ "Sin City", "Etc" ]
Измените функцию private _renderItem для автозаполнения, чтобы использовать ваши пользовательские свойства, как показано в этом примере автозаполнения (непроверенный):
$( "#project" ).autocomplete({ source: "./search.php", minLength: 3 }) .data( "autocomplete" )._renderItem = function( ul, item ) { return $( "<li></li>" ) .data( "item.autocomplete", item ) .append( item.Title ) .appendTo( ul ); };
Это немного более гибкая, но гораздо более уродливая имхо.
@Shaun Спасибо, парень, иногда вам просто нужно, чтобы кто-то указал на очевидное. То, как я, наконец, получил это, чтобы работать, было
include "db_connect.php"; $search = protect($_GET['term']); $result = mysql_query("SELECT Title FROM `movie` WHERE `Title` LIKE '%$search%' ORDER BY Title ASC") or die('Something went wrong'); $json = '['; $first = true; while ($row = mysql_fetch_assoc($result)) { if (!$first) { $json .= ','; } else { $first = false; } $json .= '{"value":"'.$row['Title'].'"}'; } $json .= ']'; echo $json;
atleast запустите mysql_real_escape_string () в $ search, прежде чем помешать его SQL Query.
Источник: бит в вашем javascript, вероятно, испортил его. Вы должны удалить. если «search.php» находится в «верхней части» каталога documentroot.
Firebug, вероятно, поможет вам взять пик в сообщении.
Я собирался сказать это, всегда санировать пользовательские входы.
Трудно сказать, так как я никогда не использовал автозаполнение jQuery, но я думаю, что вы должны настроить значение «#auto». Что-то вроде этого: $ ('# auto'). Val (). Autocomplet