загрузить данные из базы данных вместо массива - PullRequest
3 голосов
/ 21 июля 2011

Я использую плагин jQuery Tag-it для автозаполнения тегов в поле ввода формы.Плагин загружает доступные теги, хранящиеся в массиве.

$("#mytags").tagit({
    availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"]
});

Я скопировал следующую функцию из кода JavaScript плагина, я считаю, что это основная функция для загрузки тегов:

tag_input.autocomplete({
            source: options.availableTags, 
            select: function(event,ui){
                if (is_new (ui.item.value)) {
                    create_choice (ui.item.value);
                }
                // Cleaning the input.
                tag_input.val("");

                // Preventing the tag input to be update with the chosen value.
                return false;
            }
        });

Плагин работает нормально и автоматически заполняет теги из массива availableTags, однако я хотел бы внести в него небольшие изменения.Вместо загрузки тегов из массива я хотел бы загрузить теги из таблицы базы данных mySQL.Таблица имеет следующую структуру:

теги:

tag_id      tag_name
1            c++
2            java
3            php
4            javascript
5            ruby

Итак, как я могу автоматически загружать имена тегов из базы данных (используя PHP) вместо загрузки из вышеуказанного массива?Спасибо.

Ответы [ 5 ]

0 голосов
/ 10 марта 2012

Я решил ту же проблему с помощью следующего кода:

$('#tags').tagit({
    tagSource: function(request, response) {
        var term = request.term;
        $.get("/suggestTags?term=" + term, function(data){
            var dataToReturn = data;
            response(dataToReturn); 
        });
    }
});
0 голосов
/ 21 июля 2011

Да, вам может понравиться:

Вместо

source: options.availableTags

используйте это:

source: function(request, response) {
    var term = request.term // This will hold the text you typed in autocomplete
    $.get(url, data, function(data){
        // Build an array to return
        var dataToReturn = [];
    });
    response(dataToReturn);
}
0 голосов
/ 21 июля 2011

Вы можете использовать PHP для динамического создания -

$("#mytags").tagit({
    availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"]
});

кода JavaScript.Эта запись в блоге содержит функцию, которая должна примерно соответствовать вашим потребностям.

0 голосов
/ 21 июля 2011

Посмотрите на пример использования удаленного источника данных .Параметр source - это имя php-скрипта, который выполняет запрос MySQL и возвращает данные.

0 голосов
/ 21 июля 2011

Этот плагин, кажется, основан на jQuery UI Autocomplete, поэтому исходный параметр в вашем коде может быть либо массивом, либо строкой, либо обратным вызовом.Пожалуйста, обратитесь к

http://jqueryui.com/demos/autocomplete/#remote

для соответствующей документации.По сути, вы можете вставить строку с URL-адресом в ваш сценарий обслуживания, который анализирует $_GET['term'], назначенный плагином, и возвращает массив ваших тегов.

...