jQuery TagIt (автозаполнение) Извлечение списка JSON через AJAX

Это вопрос, основанный на:Попытка заставить tag-it работать с вызовом AJAX

Однако вышеприведенное просто создает сообщение об ошибке «this.source не является функцией». для меня.

Я пытаюсь, чтобы этот список json отображался как источник тегов для tagit через ajax. Код ниже:

// Tagit
$("#tags").tagit({      
    tagSource: function() {
        $.ajax({
            url: "/admin/ajax.php?q=fetch_all_tags",
            dataType: "json",
            success: function(data) {
                console.log(data);
                return data;
            }
        });
    }       
});

Вызов ajax возвращает:

{"4":"php","2":"html","3":"css"}

Ответы на вопрос(5)

Решение Вопроса

что я использовал старую версию тега it. Если вы получаете ту же ошибку, убедитесь, что вы используете новейшую версию tagit

этот код может помочь вам

$("#mytags").tagit({
    autocomplete: {
        source: function( request, response ) {
            /*call api*/
        }
    }
});
 01 окт. 2015 г., 16:46
Melhor Resposta.
 25 апр. 2015 г., 04:27
Большое спасибо, @rjdmello Ваш фрагмент кода работает отлично, и это лучший ответ здесь.

вероятно, должны использовать что-то подобное для обработчика успеха:

success: function (categoriesList) {
    response($.map(categoriesList, function (category) {
        return {
            label: category.Name + " (ID: " + category.ID + ")",
            value: category.Name
        };
    }));
}

Я отображаю категории объектов, которые имеют свойства ID и Name.

<!-- language: lang-js -->

$('.tags ul').tagit({

    itemName: 'question',
    fieldName: 'tags',
    removeConfirmation: true,
    //availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"]
    allowSpaces: true,
    // tagSource: ['foo', 'bar']
    tagSource: function () {
        $.ajax({
            url: "/autocomplete_tags.json",
            dataType: "json",
            data: {
                term: 'ruby'
            },
            success: function (data) {
                console.log(data);
                return data;
            }

        });
    },
    autocomplete: {
        delay: 0,
        minLength: 2,
        source: this.tagSource()
    }
});

если вы хотите использовать собственные источники автозаполнения, такие как ответ Ajax / XHR.

Например:

$("#myTags").tagit({
    autocomplete: {
       delay: 0,
       minLength: 2,
       source : 'your data response'
    }
});

Ваш ответ на вопрос