Подтвердить что ты не робот

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"}
4b9b3361

Ответ 1

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

Ответ 2

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

$("#mytags").tagit({
    autocomplete: {
        source: function( request, response ) {
            /*call api*/
        }
    }
});

Ответ 3

Источник autocomplete.source должен быть переопределен, если вы хотите использовать собственные источники автозаполнения, такие как ответ Ajax/XHR.

Например:

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

Ответ 4

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

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

Я показываю объекты категорий, у которых есть свойства ID и Name.

Ответ 5

Я думаю, что вы можете перезаписать метод автозаполнения из jQuery UI:

<!-- 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()
    }
});