jQuery Автозаполнение Mysql PHP - PullRequest
5 голосов
/ 15 марта 2011

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

и это 'auto' div

<div id="searchTxtFieldDiv">
<p><input type="text" id="auto" /></p>
</div>

Когда я смотрю на вызов с помощью firebug, я вижу, что search.php возвращает

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

jQuery просто отображает НЕ УКАЗАНО есть идеи ??

Ответы [ 4 ]

7 голосов
/ 15 марта 2011

Посмотрите документацию по автозаполнению jquery ui .Возвращаемый вами JSON не соответствует искомому автозаполнению.Возвращаемый объект должен иметь свойства с именем label или value (или оба).

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

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

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

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

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

[ "Sin City", "Etc" ]

Вариант 2: Изменить частную функцию _render

Изменить частный _renderItemфункция автозаполнения для использования ваших пользовательских свойств, как показано в этом примере autocomplete (не проверено):

$( "#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 );
};

Это немного более гибко, но намного уродливее imho.

4 голосов
/ 15 марта 2011

@ 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;
0 голосов
/ 15 марта 2011

Я собирался сказать это, всегда дезинфицировать пользователя.

Трудно сказать, так как я никогда не использовал автозаполнение jQuery, но я думаю, что вы должны указать значение "#auto". Примерно так: $ ('# auto'). Val (). Autocomplet

0 голосов
/ 15 марта 2011

по крайней мере, запустите mysql_real_escape_string () для поиска $ перед тем, как вставить его в SQL-запрос.

Источник: бит в вашем javascript, вероятно, испортил его. Вы должны удалить. если search.php находится в верхней части директории documentroot.

Firebug, вероятно, поможет вам также получить максимум в общении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...