Intereting Posts
Удалить субдомен из строки url, если найден субдомен Как отправить электронное письмо каждые три дня, пока бронирование не будет подтверждено Использование PHP и Google Maps Api для определения расстояния между двумя почтовыми кодами (Великобритания) Последовательная связь Arduino с PHP Как показать pdf-файлы в браузере пользователя, если плагин не установлен SilverStripe 3 – Опции для <% loop%> Как найти тег объекта с параметром и вставить тег внутри HTML с помощью простого html DOM php Doctrine2 Migration Использование DBAL вместо $ this-> addSql Переопределение стратегии генерации идентификатора по умолчанию не влияет на ассоциации Ошибка анализа: синтаксическая ошибка, неожиданный «mysql_query» (T_STRING) в BelongsTo проблема в cakephp и html select, я не могу понять, как это сделать Извлечение определенных файлов из ZIP в PHP Как написать PHP-кодирование, чтобы отобразить все файлы и каталоги в качестве ссылок на них? Как перезаписать класс из компонента безопасности? Какая простая альтернатива Php для расширения php gettext, которая может поддерживаться всеми видами бесплатного хостинга

jQuery Autocomplete Mysql PHP

Привет, кто-нибудь, пожалуйста, взгляните на это и сообщите мне, где я ошибаюсь. Я пытаюсь получить автозаполнение 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 (или оба).

Вы можете попробовать следующие варианты:

Вариант 1: изменение возвращено JSON

Измените возвращаемый JSON, чтобы включить свойства метки / значения, такие как:

 [{"label":"Sin City"}] 

В примерах также используется свойство id. Я считаю, что вышеизложенное является минимальным требованием для автозаполнения для отображения списка значений. Я думаю, вы также можете вернуть массив строк, и он отобразит его точно так же, как и выше.

 [ "Sin City", "Etc" ] 

Вариант 2: изменение функции private _render

Измените функцию 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